关于如何使用指向 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&lt;MainWindow*&gt;(window()))(而不是parentWidget())。这样您就不必遍历***小部件。

以上是关于关于如何使用指向 MainWindow 的指针的 QT 问题的主要内容,如果未能解决你的问题,请参考以下文章

QT中使用函数指针

如何使用 std::sort() 对指向值的向量进行排序?

当向量在内部类中时,如何删除指向对象的向量指针

关于函数指针的注意事项

关于C++基类、派生类的引用和指针

qt中如何获得控件所在的布局的指针。。