我在MainWindow中有一个OpenGL小部件。
我想从其代码中访问 MainWindow 。
我已尝试使用qApp->activeWindow()
和findChild()
组合,但它不起作用。
WidgetOpenGLDraw 构造函数如下所示:
WidgetOpenGLDraw::WidgetOpenGLDraw(QWidget* parent):QOpenGLWidget(parent),gl(nullptr){}
EDIT的 1 >
这也会崩溃:((MainWindow*)qApp->activeWindow())->fname_here();
。
答案 0 :(得分:1)
QMainWindow
不是WidgetOpenGLDraw
的父母。 QMainWindow
有centralWidget()
,它是WidgetOpenGLDraw
的父级。所以可能有效。
MainWindow* mainWindow = qobject_cast<MainWindow*>(parentWidget()->parentWidget());
if (mainWindow) {
// do stuff
}
答案 1 :(得分:0)
看起来构造函数中的QWidget* parent
是QMainWindow。将其存储为成员,您可以从WidgetOpenGLDraw类访问它。
听起来不太好但它应该有用。