Диалоги Qt в контексте OpenGL

Я работал на этом несколько старом примере: http://doc.qt.nokia.com/qq/qq26-openglcanvas.html

Насколько я понимаю, пример заключается в том, что QDialog, добавленный в сцену с помощью оконных флагов CustomizeWindowHint и WindowTitle, должен иметь строку заголовка, подобную диалогу верхнего уровня. Однако, когда я запускаю пример, у меня нет заголовков.:(

Я также попробовал несколько других флагов, но вижу только маленький QLabel без строки заголовка.

Код ниже:

QGraphicsView view;

view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
view.setScene(new MyGLScene(0));

QDialog *dialog = new QDialog(0, Qt::CustomizeWindowHint | Qt::WindowTitleHint
                              | Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint);

dialog->setWindowOpacity(0.8);
dialog->setWindowTitle("Sample");
dialog->setLayout(new QVBoxLayout);

dialog->layout()->addWidget(new QLabel("Hello!"));
dialog->layout()->addWidget(new QPushButton("Ok", 0));

view.scene()->addWidget(dialog);
view.show();

1 ответ

У меня такая же проблема. addWidget Метод оборачивает виджет в QGraphicsProxyWidget, По некоторым причинам QGraphicsProxyWidget кажется, игнорирует флаги или не пропускает его.

Вот как я это исправил с помощью:

view.scene()->addWidget(dialog, , dialog->windowFlags());

ваш измененный код:

QGraphicsView view;

view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
view.setScene(new MyGLScene(0));

QDialog *dialog = new QDialog(0, Qt::CustomizeWindowHint | Qt::WindowTitleHint
                              | Qt::WindowCloseButtonHint |         Qt::WindowMinimizeButtonHint);

dialog->setWindowOpacity(0.8);
dialog->setWindowTitle("Sample");
dialog->setLayout(new QVBoxLayout);

dialog->layout()->addWidget(new QLabel("Hello!"));
dialog->layout()->addWidget(new QPushButton("Ok", 0));

view.scene()->addWidget(dialog, , dialog->windowFlags());
view.show();
Другие вопросы по тегам