gpt4 book ai didi

c++ - 在 MainWindow 中全屏显示 QDialog 有时只能工作

转载 作者:行者123 更新时间:2023-11-30 00:55:22 25 4
gpt4 key购买 nike

(在 Qt 4.8 和 Ubuntu 12.10 unity 上使用 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()));
}

最佳答案

stackoverflow 上的 DomTomCat 展示了一种检测 Ubuntu 的方法,QDialog 问题与 Metacity(Ubuntu 的默认窗口管理器)中的错误有关。

Metacity 管理对话框和主窗口的方式不同,必须对其进行欺骗,使其认为 QDialog 是一个普通窗口。为了使用 QDialog 类做到这一点,必须更改它的窗口标志。

无需执行 DomTomCat 所说的所有步骤,您可以检测 session ,然后就可以了

//example inside the QDialog
this->setWindowFlags(Qt::Window);
this->showFullScreen();

该错误之前已报告(并被忽略),但据我所知这是第一个简单的解决方法。

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/*

最好的问候,

伊克尔·德·埃查尼兹。

关于c++ - 在 MainWindow 中全屏显示 QDialog 有时只能工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com