Dom*_*Cat 1 c++ qt fullscreen qdialog
(在Qt 4.8和Ubuntu 12.10上使用C ++进行测试)
我有一个显示QDialog的主窗口。当我将“对话”窗口全屏显示时,即使它似乎是一个适当的窗口,它也似乎始终无法工作。意思是,窗口有时会全屏显示。
有人知道吗?我知道Qt指出它可能无法在所有X环境中使用,但是可以不是那么糟糕,不是吗?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDialog* d = new QDialog();
d->setModal(false);
d->show();
qDebug() << d->isWindow();
// works most of the times, though not always:
// d->showFullScreen();
// sometimes works, sometimes it doesn't:
QTimer::singleShot(2000, d, SLOT(showFullScreen()));
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这里的stackoverflow上的DomTomCat显示了一种检测Ubuntu的方法,而QDialog问题与Metacity(Ubuntu的默认窗口管理器)中的错误有关。
Metacity不能以相同的方式管理对话框和主窗口,因此必须欺骗它以使其认为QDialog是普通窗口。为了使用QDialog类这样做,必须更改其窗口标志。
无需执行DomTomCat所说的所有步骤,您可以检测到会话,然后
//example inside the QDialog
this->setWindowFlags(Qt::Window);
this->showFullScreen();
Run Code Online (Sandbox Code Playgroud)
该错误已在以前报告(并忽略),但据我所知,这是第一个简单的解决方法。
https://bugreports.qt.io/browse/QTBUG-16034
https://git.gnome.org/browse/metacity/tree/src/core/window.c#n6326
Ubuntu也可以使用compiz。可以在以下位置看到:
grep DefaultProvider-windowmanager /usr/share/gnome-session/sessions/*
Run Code Online (Sandbox Code Playgroud)
最好的祝福,
伊克·德·埃坎尼兹
归档时间: |
|
查看次数: |
5240 次 |
最近记录: |