Я пишу приложение с использованием PyQt4 4.11.4 (Qt 4.8.7) и Python 2.7.12. При запуске с помощью RemoteApp (встроенная служба удаленного рабочего стола Windows) я не мог заставить окна открываться в максимизированном состоянии: он отображается максимально для нескольких (одиночных?) Кадров и сразу переходит к восстановленному состоянию. Код для воспроизведения ошибки:Не удается открыть окно с максимизированным использованием Qt4 через RDP (RemoteApp)
from PyQt4.QtGui import QApplication, QDialog
from PyQt4.QtCore import Qt
import sys
app = QApplication(sys.argv)
w = QDialog()
w.setWindowFlags(Qt.Window)
w.showMaximized()
w.show()
sys.exit(app.exec_())
ошибка не может быть воспроизведена с Python 2.6.4 и Qt 4.5.3 (приложение построено с PyInstaller и я не могу найти способ, чтобы получить PyQt версию).
Единственное упоминание подобной ошибки (не уверен, что она такая же), я нашел here.
Есть ли какие-либо исправления для этой ошибки? Я не считаю использование более старой версии Qt в качестве решения.
UP1: Сниппет выше переписан в C++ производит такое же поведение, так что это ошибка Qt.
UP2: Окна в Qt 4.8 имеют WS_POPUP
и WS_combine_POPUPWINDOW
стилей, в то время как в Qt 4.5 они не делают. Ошибка может быть введена при фиксации this one.
UP3: Да, проблема в стиле WS_POPUP
. После того, как вручную удалить его окно остается максимальной:
...
HWND hWnd = w.winId();
long style = GetWindowLong(hWnd, GWL_STYLE);
SetWindowLong(hWnd, GWL_STYLE, style & ~WS_POPUP);
...
Поиск другой способ удалить его ...