C++ 如何为动态创建的对象将信号附加到插槽
我当前有多个复选框,这些复选框是动态创建的,如何向它们分配信号。这些复选框附加到C++ 如何为动态创建的对象将信号附加到插槽,c++,qt,signals-slots,C++,Qt,Signals Slots,我当前有多个复选框,这些复选框是动态创建的,如何向它们分配信号。这些复选框附加到QStandardItemModel。我需要知道他们什么时候被点击。这就是我创建checkboxex的方式 QStandardItem* chk_all = new QStandardItem(); chk_all->setCheckable(true); chk_all->setCheckState(Qt::Unchecked); 要将信号附加到插槽,您需要对象发送方的地址。由于该对象在设计时不存在于
QStandardItemModel
。我需要知道他们什么时候被点击。这就是我创建checkboxex的方式
QStandardItem* chk_all = new QStandardItem();
chk_all->setCheckable(true);
chk_all->setCheckState(Qt::Unchecked);
要将信号附加到插槽,您需要对象发送方的地址。由于该对象在设计时不存在于ui中,因此如何获取其地址。这样我就可以完成connect语句了
QObject::connect("what goes here" ,SIGNAL(clicked()), this, SLOT(CheckClicked())); //Tester
这些复选框不是小部件或单独的对象,
QStandardItem
类不是从QObject
派生的,您不能将它们分别连接到插槽
由于它们的状态存储在模型中,选中或取消选中它们将使模型发出信号dataChanged(QModelIndex,QModelIndex)
和itemChanged(QStandardItem*)
但这些信号也会因复选框状态以外的更改而发出。您可能还必须在模型中存储复选框previous state(使用
QStandardItem::setData
/data
和a),以便能够将其与新状态进行比较并检测更改。您实际上没有分配信号。将信号连接到插槽。您是否已经阅读了Qt关于和的文档?让我重新表述一下我的问题刚刚更新了我的问题-希望这能澄清问题,而不是chk_all
指向您要连接其信号的对象的指针(即持有地址)?