可枚举的 Qt 小部件

发布于 2024-10-01 02:02:31 字数 191 浏览 5 评论 0原文

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

在 Windows 中,我会在循环中使用顺序控件 ID 和 GetDlgItem(hDlg, IDC_BASEID + i)。在 Cocoa 中,我会使用顺序视图标签或将它们包含在不可见的容器中。 Qt 的方式是什么?

I have a Qt dialog box with several controls that need more or less uniform processing. I want to store pointers to them in an array and enumerate over them.

In Windows, I'd use sequential control IDs and GetDlgItem(hDlg, IDC_BASEID + i) in a loop. In Cocoa, i'd use sequential view tags or include them in an invisible container. What's the Qt way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故人的歌 2024-10-08 02:02:31

也许 QObject::findChildren(QRegExp) 可以解决这个问题,如果这些小部件具有相似的名称。

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

Maybe QObject::findChildren(QRegExp) can do the trick if the widgets have similar names.

QList<QLineEdit*> lineEdits = dialog->findChildren<QLineEdit*>(QRegExp("lineEdit[0-9]+"));
foreach (QLineEdit* lineEdit, lineEdits) {
    lineEdit->clear();
}
狠疯拽 2024-10-08 02:02:31

欺骗的答案告诉你如何做到这一点 - 但你可能不应该

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

The dupe answer tells you how to do this - but you probably shouldn't

The Qt way is to have the same slot (ie handler) registered for all the widgets - then in the event handler use the field in the event to tell you which widget fired and get a pointer to it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文