0

我目前有多个动态创建的复选框,如何为它们分配信号。这些复选框附加到 QStandardItemModel. 我需要知道它们何时被点击。这就是我创建复选框的方式

QStandardItem* chk_all = new QStandardItem();
chk_all->setCheckable(true);
chk_all->setCheckState(Qt::Unchecked);

要将信号附加到插槽,您需要作为对象的发送者的地址。由于在设计时该对象在 UI 中不存在,我如何获取它的地址。这样我就可以完成连接语句

QObject::connect("what goes here" ,SIGNAL(clicked()), this, SLOT(CheckClicked())); //Tester
4

1 回答 1

2

这些复选框不是小部件或单独的对象,并且QStandardItem该类不是从 派生的QObject,您不能将它们中的每一个单独连接到插槽。

由于它们的状态存储在模型中,选中或取消选中它们将使模型发出信号dataChanged(QModelIndex,QModelIndex)itemChanged(QStandardItem*).

但这些信号也会针对复选框状态以外的更改发出。您可能还必须将复选框的先前状态存储在模型中(使用QStandardItem::setData/data自定义数据角色),以便能够将其与新状态进行比较并检测更改。

于 2013-07-20T00:58:04.030 回答