Qt -在QAction中存储一个小部件指针

Qt - Storing a widget pointer in a QAction?

本文关键字:一个 小部 指针 QAction 存储 Qt      更新时间:2023-10-16

在Qt中我有一个表,其中每一行都有一个按钮,该按钮打开一个下拉菜单,您可以单击操作。我将动作的triggered()信号连接到将处理它们的插槽,但是在插槽中,我必须知道动作被触发的行。我不能把它存储在setData()中,因为它只存储QVariant。我还能如何存储指向小部件的指针?

Q_DECLARE_METATYPE(QPushButton *)

QPushButton *pb = new QPushButton;
QVariant v = QVariant::fromValue(pb);
qDebug() << pb << v.value < QPushButton * >();

您可以使用QVariant::fromValue()方法设置数据

如果你需要确定信号的发送者,使用

QWidget *w = qobject_cast<QWidget *>(sender());