我正在寫Qt(Ubuntu 12.04上的4.8.1)應用程序,它在會話之間存儲主窗口幾何體。我注意到,如果widget最大化,qt不會存儲它的非最大化幾何。很顯然,我希望我的應用程序能夠返回它的非最大化大小,如果它自上次最大化以來已關閉/啓動,則大小相同。在QWidget :: save/restoreGeometry如果最大化會丟失窗口大小 - 錯誤或功能?
- 主窗口未被最大化並且具有幾何X;
- 最大化主窗口;
- 保存窗口幾何(使用QWidget :: saveGeometry)來配置文件;
- 關閉我的應用程序;
- 重新開始;從配置文件
- 負載幾何形狀
- 還原(未最大化;?)步驟6窗口被最大化(如預期)
之後,但在步驟7之後,它返回到一些內部缺省大小(即,一個在QtCreator中設計表單時設置),而不是持續非最大化幾何X.
這是期望的行爲嗎?或者是不可能/難以在qt內部實現?
是因爲當最大化時,窗口管理器記住非最大化的大小,而不是qt(至少在linux上)?
這意味着我必須始終跟蹤我的寡婦大小/位置 - 每次調整大小。第3點不是由我的代碼完成的,而是由用戶單擊窗口欄上的最大化按鈕完成的。事實上,在目前的開發階段,我列出的所有步驟都是由用戶單獨激活的。無論如何 - 這不是我的問題的重點 - 我知道我的方式圍繞小部件的幾何形狀,並控制它 - 但我認爲'QWidget :: saveGeometry'的存在完全是爲了擺脫我的擔心 - 因爲我必須寫幾何無論如何保存/恢復,是否意味着它沒有達到目的(被竊聽)? – 2013-02-27 12:56:20
QWidget.cpp確實嘗試使用QWidget :: restoreGeometry(...)的QByteArray參數中的windowStates恢復normalGeometry和frameGeometry。我會說如果它不起作用,提出一個QT Bug,因爲在另一個bug中https://bugreports.qt-project.org/browse/QTBUG-21371最後一個但是第6個評論指示normalGeometry在去時被重置從全屏/最大化到正常狀態,這在Qt 4.7中沒有發生。正如我猜你知道有幾個解決方法。也不知道Qt 5是否解決了它。這是Qt嘗試做某事並且不正確的一個例子= bug – Viv 2013-02-27 14:28:40