关于如何使用指向 MainWindow 的指针的 QT 问题
Posted
技术标签:
【中文标题】关于如何使用指向 MainWindow 的指针的 QT 问题【英文标题】:QT question about how to use a pointer to MainWindow 【发布时间】:2020-06-27 08:48:34 【问题描述】:我知道如何使用指向 Widget 的指针,例如 Widget* fatherPtr = (Widget*)parentWidget();
。
但在 MainWindow 中,当我使用 MainWindow* ptr = (MainWindow*)parentWidget();
时它不起作用。它似乎是一个无效的指针。如何解决?我急于得到正确的解决方案,非常感谢!
【问题讨论】:
您的小部件层次结构是什么样的?您在哪个小部件上调用parentWidget
?此外,小部件很少需要直接联系其父级,通常父级通过属性和信号槽连接为子级设置一切。
justcheckingonall.wordpress.com/2013/11/27/get-mainwindow-qt
【参考方案1】:
我已经通过使用 MainWindow 中声明的函数解决了我的问题:
MainWindow* MainWindow::getMainWindow()
foreach(QWidget *w, qApp->topLevelWidgets())
if (MainWindow* mainWin = qobject_cast<MainWindow*>(w))
return mainWin;
return nullptr;
感谢所有帮助过我的人
【讨论】:
只是一个注释。如果您对特定窗口小部件是其子窗口的主窗口感兴趣,您可以使用返回***窗口小部件的window()
方法。所以auto mainWin = qobject_cast<MainWindow*>(window()))
(而不是parentWidget()
)。这样您就不必遍历***小部件。以上是关于关于如何使用指向 MainWindow 的指针的 QT 问题的主要内容,如果未能解决你的问题,请参考以下文章