qdw的大小由其插入控件大小决定,但为什么插入的qow无法调整大小?
如果初始大小没有自动设置,建议设置最小尺寸, qdw->setMinimumSize(QSize(800, 600));
#include <QApplication>
#include <QDockWidget>
#include <QOpenGLWidget>
#include <QMainWindow>
#include <QMdiArea>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow *mainWin = new QMainWindow;
QDockWidget *dockWidget = new QDockWidget(mainWin);
QOpenGLWidget *glWidget = new QOpenGLWidget(dockWidget);
glWidget->setMinimumSize(QSize(400, 400));
dockWidget->setWidget(glWidget);
mainWin->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
QMdiArea *mdiArea = new QMdiArea(mainWin);
mainWin->setCentralWidget(mdiArea);
mainWin->show();
return app.exec();
}
int main(int argc, char *argv[])
{
//需要设置共享上下文不然停靠窗体从正常到浮动后QOpenGLWidget窗体会失效
#if (QT_VERSION > QT_VERSION_CHECK(5,4,0))
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
#endif
QApplication a(argc, argv);
...
}
使用dock 控件需要注意上下文切换,
mian函数追加
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
不切换上下文你调用一些函数状态也会有问题。
Enables resource sharing between the OpenGL contexts used by classes like QOpenGLWidget and QQuickWidget. This allows sharing OpenGL resources, like textures, between QOpenGLWidget instances that belong to different top-level windows. This attribute must be set before QGuiApplication is constructed. This value was added in Qt 5.4.