簡體   English   中英

QSizeGrip和Qt :: Popup

[英]QSizeGrip and Qt::Popup

當我將QSizeGrip添加到小部件(例如QWidgetQDialog ),然后啟用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.

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