我的理解是當前顯示的文本與qcombobox項目列表內容有關。如果一個項目的長度比qcombobox的寬度更長,寬度更大,只顯示部分文本在qcombobox上?如何在qcombobox(QT)中顯示文本的一部分
從上面的圖片看出,QT已經顯示文本的一部分(全項與「ker的」結束時,顯示項目與「SDL」結尾),但我可以控制精確顯示文本?因爲我的組合框有一個背景圖像,箭頭將比上圖中的更多。
另一個問題是我可以控制下拉窗口中的項目文本顯示嗎? QT用'...'替換了一些單詞,但我喜歡自己控制它。
我的理解是當前顯示的文本與qcombobox項目列表內容有關。如果一個項目的長度比qcombobox的寬度更長,寬度更大,只顯示部分文本在qcombobox上?如何在qcombobox(QT)中顯示文本的一部分
從上面的圖片看出,QT已經顯示文本的一部分(全項與「ker的」結束時,顯示項目與「SDL」結尾),但我可以控制精確顯示文本?因爲我的組合框有一個背景圖像,箭頭將比上圖中的更多。
另一個問題是我可以控制下拉窗口中的項目文本顯示嗎? QT用'...'替換了一些單詞,但我喜歡自己控制它。
試試這個
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,並返回消隱文本。
嘗試設置組合框的寬度。 Combobox不會超出指定的寬度。
你可以存儲任意字符串作爲項目的文本和用戶數據的整個字符串:
在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)
你是說下拉框寬度或combox本身的寬度? – jon
組合框寬度。 – user2906526
@ user2906526想說你把'm_combobox-> setFixedWidth(someInt);'它應該可以工作,但你會得到一個elide中間我認爲(...在文本的中間)。 – Mido