QComboBox 的初始项目是否可以显示比项目列表中更短的文本项目?
Can the initial item of a QComboBox display a shorter text item than in the item list?
我有一个带有长标签的 QComboBox。
qc = new QComboBox;
qc->addItem(tr("LabelA is a very long label here."));
下拉列表中的文本比我想要的要宽得多,但当组合框处于显示项目列表的下拉状态时,我想要长文本字符串。
有没有办法让下拉菜单在未激活时显示一个短文本项,并且只有在单击它后(显示它的项目列表)下拉菜单才会以全宽显示整个文本?
因此在激活之前查看 QComboBox 时,它可能会显示类似...
MyLabel: LabelA
注意:其余文字“这里是很长的标签。”未显示。
我确实看到了一些类似的问题,但答案没有经过检查,似乎没有用。
让我们逐步解决这个问题,涵盖更广泛的范围
第 1 步: 下拉宽度应等于具有最大长度的项目。 (我们将使用 QFontMetrics 来查找具有最大像素长度的项目的宽度)。
第 2 步: 要查找具有最大长度的项目,请在 QStringList 中插入项目并遍历每个项目以找到具有最大长度的项目。
QFont myFont("times", 10); //assuming you are using times new roman
QFontMetrics fm(myFont);
int pixelwide; // stores the length in pixes
int maxLen = 0 ;
QStringList itemList;
QString maxDropdownLen,styleSheet;
itemList<<"LabelA is a very long label here.";
for(int i=0; i<itemList.size();i++){
pixelwide = fm.width(itemList[i]); //get the width in pixels
if(pixelwide>maxLen)
{
maxLen=pixelwide; //setting maximum width in pixels
}
}
第 3 步:现在将下拉宽度设置为具有最大长度的项目的宽度。
maxDropdownLen = QString::number(pixelwide);
styleSheet = "QComboBox QAbstractItemView { min-width: %1;}";
qc->addItems(itemList);
qc->setStyleSheet(styleSheet.arg(maxDropdownLen));
我有一个带有长标签的 QComboBox。
qc = new QComboBox;
qc->addItem(tr("LabelA is a very long label here."));
下拉列表中的文本比我想要的要宽得多,但当组合框处于显示项目列表的下拉状态时,我想要长文本字符串。
有没有办法让下拉菜单在未激活时显示一个短文本项,并且只有在单击它后(显示它的项目列表)下拉菜单才会以全宽显示整个文本?
因此在激活之前查看 QComboBox 时,它可能会显示类似...
MyLabel: LabelA
注意:其余文字“这里是很长的标签。”未显示。
我确实看到了一些类似的问题,但答案没有经过检查,似乎没有用。
让我们逐步解决这个问题,涵盖更广泛的范围
第 1 步: 下拉宽度应等于具有最大长度的项目。 (我们将使用 QFontMetrics 来查找具有最大像素长度的项目的宽度)。
第 2 步: 要查找具有最大长度的项目,请在 QStringList 中插入项目并遍历每个项目以找到具有最大长度的项目。
QFont myFont("times", 10); //assuming you are using times new roman
QFontMetrics fm(myFont);
int pixelwide; // stores the length in pixes
int maxLen = 0 ;
QStringList itemList;
QString maxDropdownLen,styleSheet;
itemList<<"LabelA is a very long label here.";
for(int i=0; i<itemList.size();i++){
pixelwide = fm.width(itemList[i]); //get the width in pixels
if(pixelwide>maxLen)
{
maxLen=pixelwide; //setting maximum width in pixels
}
}
第 3 步:现在将下拉宽度设置为具有最大长度的项目的宽度。
maxDropdownLen = QString::number(pixelwide);
styleSheet = "QComboBox QAbstractItemView { min-width: %1;}";
qc->addItems(itemList);
qc->setStyleSheet(styleSheet.arg(maxDropdownLen));