C++ 从QWidgetList(QList<;QWidget*>;)访问QWidget子插槽/信号

C++ 从QWidgetList(QList<;QWidget*>;)访问QWidget子插槽/信号,c++,qt,qwidget,qlist,C++,Qt,Qwidget,Qlist,我正在制作一个gui应用程序设计器。每次用户创建新的小部件时,它都存储在QWidgetList中。它可以是QPushButton、QLineEdit等等 例如,假设我有一个QPushButton(索引0)和一个QLineEdit(索引1) 是否可以访问WidgetList[0]的信号,或使用WidgetList[1]的插槽setText 或者我真的必须为每种类型创建一个QList,比如QList和QList 提前感谢要使用新的连接语法,您必须将小部件转换为正确的类型。例如: QPushButto

我正在制作一个gui应用程序设计器。每次用户创建新的小部件时,它都存储在QWidgetList中。它可以是QPushButton、QLineEdit等等

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

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

或者我真的必须为每种类型创建一个QList,比如QList和QList


提前感谢

要使用新的连接语法,您必须将小部件转换为正确的类型。例如:

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);
QPushButton b{“清除”};
Qlinee;
QWidgetList小部件{&b,&e};
QObject::connect(QObject_cast(小部件[0]),&QPushButton::单击,
qobject_cast(小部件[1]),&QLineEdit::clear);

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

您只需要列举一个小部件的信号和插槽,还是需要知道哪个信号连接到哪个插槽?我需要能够将特定信号连接到特定插槽,并检索发送方的指针。。。