2017-03-31 84 views
1

我繼承了一個主題爲右鍵菜單的Qt項目(在macOS上看起來很奇怪)。我從QMenu中刪除了setStyleSheet()調用,但它仍然只突出顯示文本而不是項目的背景,並使用奇怪的字體大小。關閉Qt中菜單的主題?

Qt應用程序中是否還有其他地方可以設置某些人可以設置菜單以某種方式繼承的顏色?

菜單通過exec()顯示,並且QMenu和QActions使用QWidget作爲它們的父級創建,以防有所幫助。

回答

1

可能它已被設置爲全球;尋找QApplication::setStyleSheet的呼叫,以及該全局樣式表中的QMenu選擇器。它也可以設置爲父窗口小部件的樣式表。

一般來說,如果我是你,我會爲包含QMenu選擇器的樣式表項目grep項目。

+0

沒有在應用程序中調用QApplication :: setStyleSheet()。我甚至註釋掉了所有可以找到的setStyleSheet()和setStyle調用,並且主窗口仍然是黑色的,它的上下文菜單也是如此。 – uliwitness

+0

如果窗口已在設計器中繪製,請檢查那裏的樣式表屬性(在.ui文件中)。 –

1

樣式是可繼承的。可以有一個全局樣式表,或者任何一個窗口小部件上的樣式表,它們是所顯示菜單的父項。你需要檢查它們並刪除菜單樣式。

您可以通過使用動態屬性來描述風格是否適用或不限制的菜單樣式的適用性:

QMenu[styled="true"] { ... } 

然後,在菜單風格的平臺,應用屬性:

void styleMenu(QMenu * menu) { 
    #ifndef Q_OS_MACOS 
    menu->setProperty("styled", true); 
    #endif 
} 

... 
styleMenu(menu); // no-op on OS X 
+0

我從.ui文件中刪除了所有styleSheets,並從代碼中調用了所有setStyle ...黑色窗口內容視圖中仍有奇怪的黑色上下文菜單:( – uliwitness