2015-11-02 76 views
1

我的理解是當前顯示的文本與qcombobox項目列表內容有關。如果一個項目的長度比qcombobox的寬度更長,寬度更大,只顯示部分文本在qcombobox上?如何在qcombobox(QT)中顯示文本的一部分

enter image description here

從上面的圖片看出,QT已經顯示文本的一部分(全項與「ker的」結束時,顯示項目與「SDL」結尾),但我可以控制精確顯示文本?因爲我的組合框有一個背景圖像,箭頭將比上圖中的更多。

另一個問題是我可以控制下拉窗口中的項目文本顯示嗎? QT用'...'替換了一些單詞,但我喜歡自己控制它。

回答

1

試試這個

m_combobox->addItem("a very long long long long long long text "); 
    QFont font("times", 24); 
    QFontMetrics fm(font); 
    QString elidedText= fm.elidedText("a very long long long long long long text ",Qt::ElideRight, 80); 
m_combobox->addItem(elidedText); 

你可以做一個函數,它爲QString作爲參數,返回你給它你的文字爲QString,並返回消隱文本。

0

嘗試設置組合框的寬度。 Combobox不會超出指定的寬度。

+0

你是說下拉框寬度或combox本身的寬度? – jon

+0

組合框寬度。 – user2906526

+0

@ user2906526想說你把'm_combobox-> setFixedWidth(someInt);'它應該可以工作,但你會得到一個elide中間我認爲(...在文本的中間)。 – Mido

0

你可以存儲任意字符串作爲項目的文本和用戶數據的整個字符串:

在PyQt的

for text in itemlist: 
     combobox.addItem(text[0:n], text) 

,並獲得displaytext,用戶數據是:

combobox.currentText() 
combobox.currentData(QtCore.Qt.UserRole) 

或通過

combobox.itemText(index) 
combobox.itemData(index, QtCore.Qt.UserRole) 
相關問題