可枚举的 Qt 小部件
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许 QObject::findChildren(QRegExp) 可以解决这个问题,如果这些小部件具有相似的名称。
Maybe QObject::findChildren(QRegExp) can do the trick if the widgets have similar names.
欺骗的答案告诉你如何做到这一点 - 但你可能不应该
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.