Qt从QOpenGLWidget访问MainWindow

时间:2015-11-13 12:16:13

标签: c++ qt opengl

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

enter image description here

我想从其代码中访问 MainWindow

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

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

EDIT的 1 >

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

2 个答案:

答案 0 :(得分:1)

QMainWindow不是WidgetOpenGLDraw的父母。 QMainWindowcentralWidget(),它是WidgetOpenGLDraw的父级。所以可能有效。

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

答案 1 :(得分:0)

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

听起来不太好但它应该有用。