繁体   English   中英

如何将信号附加到动态创建的对象的插槽中

[英]How to attach a signal to a slot for an object created dynamically

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM