我有一个QGLWidget作为我的应用程序的UI的一部分。它是不是中心小部件,它周围还有很多其他小部件。我想在用户点击按钮时全屏显示。类似的功能,如在youtube视频flash播放器上。
我尝试使用 showFullScreen 但没有效果。
我已阅读how-to-fullscreen-a-qglwidget和fullscreen-widget,但他们建议使用showFullScreen。
Qt文档指出,使用showFullScreen小部件必须是一个独立的窗口。所以我认为应该有一些技巧。
答案 0 :(得分:2)
我发现的解决方案:
void MyApp::on_fullscreen_button_clicked() {
QDialog *dlg = new QDialog(this);
QHBoxLayout *dlg_layout = new QHBoxLayout(dlg);
dlg_layout->setContentsMargins(0, 0, 0, 0);
dlg_layout->addWidget(glwidget_);
dlg->setLayout(dlg_layout);
dlg->showFullScreen();
bool r = connect(dlg, SIGNAL(rejected()), this, SLOT(showGlNormal()));
assert(r);
r = connect(dlg, SIGNAL(accepted()), this, SLOT(showGlNormal()));
assert(r);
}
void MyApp::showGlNormal() {
ui.glBox->layout()->addWidget(glwidget_);
}
答案 1 :(得分:0)
showFullScreen功能仅适用于Windows。从Qt文档:
窗口是一个窗口小部件,在视觉上不是任何其他窗口小部件的子窗口 而且通常有一个框架和一个窗口标题。
可能的解决方案如下:
当用户点击显示全屏按钮
时也许更好的想法是继承QGlWidget并在其构造函数中传递指向另一个QGlWidget的指针。构造函数应该获取提供的窗口小部件的上下文并将其应用于新窗口小部件。