Qt를 기반으로하는 전체 화면 응용 프로그램이 있습니다. 그렇지 않으면 윈도우의 일부가 가려지기 때문에 전체 화면 응용 프로그램이 항상 맨 위에 있어야합니다. 프레임이없는 전체 화면 창에 하위 창 (특수 대화 상자, ..)이 있어야합니다. 이 하위 창은 전체 화면 창 위에 표시되어야합니다. 그것들을 아래에 보여주는 것은별로 의미가 없습니다.Gnome 3에서 Qt를 사용하면 Xfce와 Unity는 하위 창이있는 전체 화면 창을 상단에 유지하지 않습니다.
짧은, 자체 포함 된 예는 다음과 같습니다
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_()
그것은 파이썬으로 작성된 파이썬 3.X + PySide 1.2.2 (Qt는 4.8) + 우분투 14.04 (유니티 데스크톱) 또는 Windows 7에서 테스트입니다. 그러나 C++ Qt (또는 PyQt) 로의 변환은 간단해야합니다.
Windows에서는 모든 것이 처음에 설명 된 것과 같습니다. Qt.WindowsStaysOnTopHint
은 필요하지 않지만 우분투에서는 필요하지 않습니다.
우분투에서는 처음에는 전체 화면 메인 창이 모든 항목 위에 있지만 자식 대화 상자 창이 만들어지면 표시됩니다. 일반 데스크톱 장식 (상단 및 왼쪽 막대)은 전체 화면 주 창 위에 표시됩니다. 보기의 일부! 하위 창이 닫히면 전체 화면 창이 다시 맨 위에 표시됩니다.
우분투 및 Qt의 상위 창에 전체 화면 창을 추가하기 위해 수행 할 수있는 작업이 있다면 지금 질문이 생깁니 까?
가능한 경우 OS 특정 코드를 피해야하기 때문에 Windows와 Linux 간의 다른 동작도 만족스럽지 않습니다.
나중에
:사용 the overview of available desktop environment on Ubuntu 나는 여러 환경을 설치하고 테스트.
KDE, Lubuntu (Lxde?) 및 Openbox는 예상대로 작동합니다 (Windows와 동일). 전체 화면 및 하위 창을 위에 표시하면 상단에 메인 창이 유지됩니다.
Gnome-Shell (Gnome 3), Xfce, Unity 및 Awesome의 경우 바탕 화면 장식은 전체 화면 모드의 맨 위에 있으며 어린이 창도 표시됩니다. Xfce와 Unity는 정확히 동일하게 작동합니다. Gnome과 Awesome은 약간의 추가 문제가 있습니다.
다른 Linux 배포판에서 Qt가 마음에 들지 않으면 어떻게 동작합니까 (예 : 데비안)? 우분투는 적어도 과거에는 특정 비전 (즉, 글로벌 메뉴 바)에 맞추기 위해 일부 Qt를 해킹했습니다."우분투 Qt 버그 메뉴 모음 전체 화면"의 일부 콤보를 검색하면 수많은 문제가 나타납니다. 우분투 상황이 현재 어떤 것인지 전혀 모르겠지만 데비안에서 대화 상자를 사용하여 전체 화면 응용 프로그램을 완성했으며 제대로 작동합니다. NB 우분투! = 리눅스! – timday
KDE (쿠분투)에서는 예상대로 작동합니다. – doru
@doru 잘 알고 있습니다. 그래서 아마 리눅스에서 우분투로 범위를 제한 할 필요가 있습니다. – Trilarion