簡體   English   中英

使用Qt在Gnome 3,Xfce和Unity下,帶有子窗口的全屏窗口不會保持在頂部

[英]With Qt under Gnome 3, Xfce and Unity a full screen window with a child window doesn't stay on top

我有一個基於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之間的不同行為也不令人滿意,因為如果可能,應該避免使用特定於操作系統的代碼。


后來:

使用Ubuntu上可用桌面環境的概述,我安裝了幾個環境並對其進行了測試。

KDE,Lubuntu(Lxde?)和Openbox按預期工作(同樣適用於Windows)。 當全屏顯示時,主窗口保持在頂部,並且上方顯示子窗口。

然而,對於Gnome-Shell(Gnome 3),Xfce,Unity和Awesome,桌面裝飾保持在全屏模式的頂部,也顯示了兒童窗口的窗口。 Xfce和Unity表現完全相同,Gnome和Awesome甚至還有一些小的額外問題。

你嘗試了文件建議的東西嗎?

Qt :: WindowStaysOnTopHint 0x00040000通知窗口系統窗口應該保持在所有其他窗口之上。 請注意,在X11上的某些窗口管理器上,您還必須傳遞Qt :: X11BypassWindowManagerHint才能使此標志正常工作。

另一件事你為什么要讓其他窗口成為一個孩子,如果你在父母的下面呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM