【问题标题】:Qt access MainWindow from QOpenGLWidgetQt 从 QOpenGLWidget 访问 MainWindow
【发布时间】:2015-11-13 12:16:12
【问题描述】:

我在 MainWindow 中有一个 OpenGL 小部件。

我想从它的代码中访问 MainWindow

我已经尝试使用 qApp->activeWindow()findChild() 组合,但它不起作用。

WidgetOpenGLDraw 构造函数如下所示: WidgetOpenGLDraw::WidgetOpenGLDraw(QWidget* parent):QOpenGLWidget(parent),gl(nullptr){}

编辑1>

这也会崩溃:((MainWindow*)qApp->activeWindow())->fname_here();

【问题讨论】:

  • @LogicStuff 我没有对插槽做任何事情,我已经尝试从我的构造函数中转换父参数,但它不起作用。
  • dynamic_cast 也许?
  • @LogicStuff 如果你的意思是这样的(dynamic_cast<MainWindow*>((qApp->activeWindow())))->fname_here();,那么它不起作用。您的意思是我应该尝试使用父构造函数参数吗?

标签: c++ qt opengl


【解决方案1】:

QMainWindow 不是WidgetOpenGLDraw 的父级。 QMainWindowcentralWidget(),它是 WidgetOpenGLDraw 的父级。所以这可能工作。

MainWindow* mainWindow = qobject_cast<MainWindow*>(parentWidget()->parentWidget());
if (mainWindow) {
 // do stuff
}

【讨论】:

    【解决方案2】:

    看起来构造函数中的QWidget* parent 是QMainWindow。将此存储为成员,您可以从 WidgetOpenGLDraw 类中访问它。

    听起来不太好,但应该可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 2012-02-27
      • 1970-01-01
      • 2018-02-21
      相关资源
      最近更新 更多