C++ 可枚举Qt小部件

C++ 可枚举Qt小部件,c++,qt,qwidget,C++,Qt,Qwidget,我有一个Qt对话框,其中有几个控件需要或多或少的统一处理。我想将指向它们的指针存储在一个数组中,并对它们进行枚举 在Windows中,我会使用顺序控制ID和GetDlgItem(hDlg,IDC\u BASEID+I)作为循环。在Cocoa中,我会使用顺序视图标记,或者将它们包含在一个不可见的容器中。Qt的方法是什么?重复的答案告诉你如何做到这一点,但你可能不应该这样做 Qt方法是为所有小部件注册相同的插槽(即处理程序),然后在事件处理程序中使用事件中的字段来告诉您哪个小部件被触发并获取指向它的

我有一个Qt对话框,其中有几个控件需要或多或少的统一处理。我想将指向它们的指针存储在一个数组中,并对它们进行枚举


在Windows中,我会使用顺序控制ID和
GetDlgItem(hDlg,IDC\u BASEID+I)
作为循环。在Cocoa中,我会使用顺序视图标记,或者将它们包含在一个不可见的容器中。Qt的方法是什么?

重复的答案告诉你如何做到这一点,但你可能不应该这样做

Qt方法是为所有小部件注册相同的插槽(即处理程序),然后在事件处理程序中使用事件中的字段来告诉您哪个小部件被触发并获取指向它的指针。

如果小部件具有相似的名称,则可能可以实现这一点

QList<QLineEdit*> lineEdits = dialog->findChildren<QLineEdit*>(QRegExp("lineEdit[0-9]+"));
foreach (QLineEdit* lineEdit, lineEdits) {
    lineEdit->clear();
}
QList lineEdits=dialog->findChildren(QRegExp(“lineEdit[0-9]+”);
foreach(QLineEdit*lineEdit,lineEdits){
lineEdit->clear();
}

可能重复的请参阅我对链接问题的回答,我相信它可以满足您的要求。通过QSignalMapper可以轻松完成多路信号处理(注意:信号,而不是事件)。但是,对属性执行相同操作需要某种枚举。想想“清除所有”类型的操作-插槽在哪里?好的-如果您想启用或填充一个小部件列表,那么指针向量可能是一个很好的解决方案。对它们进行迭代以查看哪个被按下了。