我有一个 Qt 对话框,其中包含几个需要或多或少统一处理的控件。我想将指向它们的指针存储在一个数组中并枚举它们。
在 Windows 中,我会GetDlgItem(hDlg, IDC_BASEID + i)
在循环中使用顺序控制 ID。在 Cocoa 中,我会使用顺序视图标签或将它们包含在不可见的容器中。Qt的方式是什么?
欺骗的答案告诉你如何做到这一点 - 但你可能不应该
Qt 方法是为所有小部件注册相同的插槽(即处理程序) - 然后在事件处理程序中使用事件中的字段来告诉您哪个小部件被触发并获得指向它的指针。
如果小部件具有相似的名称,也许QObject::findChildren(QRegExp)可以解决问题。
QList<QLineEdit*> lineEdits = dialog->findChildren<QLineEdit*>(QRegExp("lineEdit[0-9]+"));
foreach (QLineEdit* lineEdit, lineEdits) {
lineEdit->clear();
}