linux qt应用程序全屏,linux – 使用Qt在Gnome 3,Xfce和Unity下,带有子窗口的全屏窗口不会保持在顶部...

我有一个基于Qt的全屏应用程序.全屏应用程序应始终位于顶部,否则窗口的一部分将受阻.我希望无框全屏窗口有子窗口(特殊对话框,…).这些子窗口应显示在全屏窗口的顶部.在下面显示它们没有多大意义.

一个简短的,自成一体的例子是:

from PySide import QtGui,QtCore

app = QtGui.QApplication([])

window = QtGui.QWidget(f=QtCore.Qt.WindowStaysOnTopHint)

child_window = QtGui.QWidget(window,f=QtCore.Qt.Window)

child_window.resize(400,300)

layout = QtGui.QVBoxLayout(window)

exit = QtGui.QPushButton('Exit')

exit.clicked.connect(app.exit)

layout.addWidget(exit)

create = QtGui.QPushButton('Create child window')

create.clicked.connect(child_window.show)

layout.addWidget(create)

layout.addStretch()

window.showFullScreen()

app.exec_()

它是用Python编写的,并在Python 3.X PySide 1.2.2(Qt 4.8)Ubuntu 14.04(Unity桌面)或Windows 7上进行测试.但是转换到C Qt(或PyQt)应该很简单.

观察结果是在Windows上,一切都如开头所述. Qt.WindowsStaysOnTopHint不是必需的,而在Ubuntu上则是.

在Ubuntu上,我看到最初全屏主窗口位于所有内容之上但是一旦创建了子对话窗口,通常的桌面装饰(顶部和左侧条形图)显示在全屏主窗口上方,阻碍了视图的一部分!子窗口关闭后,全屏窗口再次位于顶部.

现在的问题是,如果有任何可以做到的事情,可以在Ubuntu上使用全屏幕窗口加上子窗口和Qt吗?

Windows和Linux之间的不同行为也不令人满意,因为如果可能,应该避免使用特定于操作系统的代码.

后来:

KDE,Lubuntu(Lxde?)和OpenBox按预期工作(同样适用于Windows).当全屏显示时,主窗口保持在顶部,并且上方显示子窗口.

然而,对于Gnome-Shell(Gnome 3),Xfce,Unity和Awesome,桌面装饰保持在全屏模式的顶部,也显示了儿童窗口的窗口. Xfce和Unity表现完全相同,Gnome和Awesome甚至还有一些小的额外问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值