QTableWidget :: setCellWidget()禁用来自QTableWidget的信号?

时间:2013-04-18 16:49:22

标签: qt signals-slots qwidget qtablewidget

我有一个QTableWidget实例,其cellEntered(int,int)信号与插槽X相关联(高亮显示包含该单元格的行)。我还有一个包含复选框的列。

问题是使用QTableWidget :: setCellWidget()方法将复选框添加到表格的单元格中:

QTableWidgetItem *checkBoxItem = new QTableWidgetItem("");
ui->tableWidget->setItem(rowCount, column, checkBoxItem);
QCheckBox* checkBox = new QCheckBox();
ui->tableWidget->setCellWidget(rowCount, column, checkBox);
connect(checkBox, SIGNAL(clicked(bool)),
    this, SLOT(checkbox_clicked(bool)));

当光标位于该列中的单元格上时,不会调用插槽X。

问题不是特别针对复选框,而是针对其他类型的小部件。

我在一些帖子中已经阅读了一些有关SignalMapper类的内容,但该类似乎有助于将信号从小部件映射到插槽。相反,我的问题与表中的信号有关。

有什么建议吗?

干杯,

巴勃罗

1 个答案:

答案 0 :(得分:0)

为什么不使用QTableWidgetItem并将其设置为QTableWidgetItem::setCheckState(Qt::CheckState state)可检查?

QTableWidgetItem *check_item = new QTableWidgetItem;
check_item->setCheckState(Qt::Unchecked);

你也可以用旗帜做。

check_item->setFlags(Qt::ItemIsUserCheckable);

QTableWidget::itemChanged(QTableWidgetItem * item)信号连接到插槽,然后检查是否在那里检查了该项目。