1

我有一个 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 类的内容,但该类似乎有助于将信号从小部件映射到插槽。相反,我的问题与表中的信号有关。

有什么建议吗?

干杯,

巴勃罗

4

1 回答 1

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)信号连接到一个插槽,并检查该项目是否在那里被选中。

于 2013-04-19T09:42:21.220 回答