2016-10-17 502 views
1

當我改變它的下拉菜單上的應用,以及(所有項目)我QComboBox comboBox->setFont(whateverQFont);的字體,它會覆蓋我已經在我的項目設置與comboBox->setItemData(index, itemSpecificFont, Qt::FontRole);如何僅更改qcombobox標籤/標題的字體?

我想了Qt :: FontRole數據如僅在QComboBox標籤上設置字體,並保持原樣顯示下拉菜單。甚至更好:直接使用與所選項目相同的字體。有沒有簡單的方法來做到這一點?

如果不是,我想我需要實現一個自定義模型來管理每個項目和標題的不同字體角色?

Thx任何提示!

+0

我已經能夠達到我想要在內線的功能,通過檢索CURRENTDATA -fontRole並將該字體應用於畫家。雖然它需要複製/粘貼QComboBox繪製代碼以在子類中修改它...如果任何人有更簡潔明瞭的方式來解決我的問題,請告訴我! – ymoreau

+0

不知道我是否理解這個問題,但爲什麼不能使用CSS https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qcombobox? – agilob

+0

@agilob我希望組合框的標籤部分顯示與所選項目相同的樣式,因此取決於項目。該項目的風格是由代碼定義的,我沒有看到任何方式使用CSS將其傳播到cbb標籤。 – ymoreau

回答

0

在開始實現自定義模型之前,您可以嘗試使用QListView。 它只適用於下拉菜單,您可以使用通常的setFont函數更改其字體;您必須將其應用到您的QComboBox,例程setView

像這樣的東西(它不是Qt的C++代碼,我已經跳過函數調用的所有參數):

QComboBox *combobox = new QComboBox(); 
combobox->setFont(); 
... 
QListView *listview = new QListView(); 
listview->setFont(); 

combobox->setView(listview); 
+0

我的問題是我在列表視圖中有不同的字體,默認的字體處理得很好。我只想將選定項目的字體應用到組合框標籤部分,這更像是標籤視圖對象比列表視圖對象的更改(但不能在QComboBox類以外訪問)。 – ymoreau

+0

哦,是的,對不起,我誤解了你的問題。您可以使用QComboBox信號'currentIndexChanged(int index)',將其與您使用所選項目索引(作爲參數傳遞)的自定義插槽連接,以使用函數'itemData(...)'檢索字體信息,將字體應用於QComboBox,以便下拉菜單字體保持不變,但組合框標籤字體根據所選項目更改 – Andre

+0

正如我在問題中所述,我嘗試過這樣做,但它不起作用,因爲listview(組合框的子組件)使用適用於所有項目的QComboBox的字體。 – ymoreau