本文要講三個問題:
1. QFileDialog去掉默認按鈕
2. redhat6 QMainWindow的所有menu的action不顯示圖標
3. linux下QComboBox彈出來的長度佔滿電腦屏幕高度
這三個問題都是Qt Linux與windows顯示風格不同的問題,雖然解決辦法都很簡單,但網上解答並不多,不知道之前答案並不好找,寫下來,希望有用。
一、QFileDialog去掉默認的Open/Save、Cancel按鈕
有人採用創建一個QWidget來遮住Open、Cancel按鈕的辦法,我一直不大讚成這種剛好達到目的而沒有正確保障的做法,這種做法在windows下可以,在Linux下無論如何遮不完全,有Open、Cancel的部分按鈕露了出來。
原來QFileDialog這種固件,還是可以被拆的,真是拆除了腦洞限制呀。舉一反三,以後對Qt中的其它類也不會客氣啦。
QDialogButtonBox* box = _filedialog->findChild<QDialogButtonBox *>(); if(box) { box->clear(); }
二、QMainWindow的所有menu的action項的圖標未顯示
windows和redhat5下可以顯示,唯有redhat6下不顯示,幫助文檔上有時會交待哪些版本之間不一致,但這個問題官方文檔也沒有說,有些問題註定可以解決卻沒有原始說明。
action->setIconVisibleMenu(true);
網上發現很多人有問這個問題,但是卻幾乎沒什麼回答,還被傳得難到無解的程度,在這兒替最先回答這個問題的人傳播一下,畢竟我找了好久。
三、QComboBox在Linux下顯示時佔滿屏幕高度
comboBox->setStyleSheet("QComboBox {combobox-popup:0;}")
設置之後恢復正常如圖(windows下不用設也正常):