从QWidgetList(QList <qwidget *>)访问QWidget子槽/信号

时间:2018-04-16 09:49:20

标签: c++ qt qwidget qlist

我正在制作一个gui app设计师。每次用户创建新窗口小部件时,它都存储在QWidgetList中。它可以是QPushButton,QLineEdit等等。

例如,假设我有一个QPushButton(索引0)和一个QLineEdit(索引1)。

是否可以访问单击WidgetList [0]的信号,或使用WidgetList [1]的插槽setText?

或者我真的必须为每种类型制作QList,例如QList&lt; QPushButton&gt;和QList&lt; QLineEdit&gt; ?

提前致谢

1 个答案:

答案 0 :(得分:1)

要使用新的连接语法,必须将窗口小部件转换为正确的类型。 E.g:

QPushButton b{“clear”};
QLineEdit e;
QWidgetList widgets{&b, &e};
QObject::connect(qobject_cast<QPushButton*>(widgets[0]), &QPushButton::clicked,
                 qobject_cast<QLineEdit*>(widgets[1]), &QLineEdit::clear);

在设计器用例中,您可能会使用文本签名或QMetaMethod句柄来引用信号和插槽,然后根本不需要任何转换,因为那些connect方法无论如何,将对象向上翻转到QObject