我的理解是当前显示的文本与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