如何在qcombobox(QT)中显示部分文本

时间:2015-11-02 07:12:25

标签: qt qcombobox

我的理解是当前的显示文本与qcombobox项目列表内容有关。如果一个项目的长度非常长且比qcombobox的宽度宽,那么只显示qcombobox上的部分文本?

enter image description here

从上图中可以看出,QT已经显示部分文字(完整项目以' ker'结尾,显示项目以' sdl'结尾)但是我可以控制确切的显示文字?因为我的组合框有一个背景图像,箭头将比上图中的箭头更多。

另一个问题是我是否可以在下拉窗口中控制项目文本显示? QT用' ...'取代了一些单词。但我喜欢自己控制它。

2 个答案:

答案 0 :(得分: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,你给它你的文本,然后它返回被删除的文本。

答案 1 :(得分:0)

您可以将任意子字符串存储为项目文本,将整个字符串存储在userData中:

中的

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

并通过以下方式获取displaytext,userData:

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

combobox.itemText(index)
combobox.itemData(index, QtCore.Qt.UserRole)