[英]QSizeGrip and Qt::Popup
當我將QSizeGrip
添加到小部件(例如QWidget
或QDialog
),然后啟用Qt::Popup
窗口標志時,大小控制不再起作用。
為什么這樣?
我想創建一個可調整大小的無邊界彈出窗口,就像QCompleter
使用的QCompleter
。 設置Qt::FramelessWindowHint
標志似乎使其變為無邊界,但是焦點行為卻大不相同。
仔細閱讀Qt資料后,我發現了兩種可能的解決方案。
基本上, QSizeGrip
提供了一個非常好的基本實現,即使設置了Qt::Popup
或由於其他原因而窗口無邊界時,它也可以正常工作。 但是,Qt嘗試使用特定於平台的機制來提供大小控制。
至少在Linux / X11下,當設置Qt::Popup
標志時,該機制似乎會失敗。
這個想法是繞過使用平台特定的機制,而總是使用基本的實現(又名Qt的后備)。 這可以通過以下任一方式來實現
Qt::BypassWindowManagerHint
標志或 QWidget::hasHeightForWidth()
以返回true(並適當提供中立的Qt::heightForWidth()
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.