将QComboBox视图的宽度调整为最长项的宽度。

3
我有一个包含长字符串的QComboBox。 长意味着这些字符串比我的GUIQComboBox的宽度更宽。 在这种情况下,Qt会以这种方式显示项目:

QComboBox

我以前使用过MatLab,它具有不太用户友好的GUI,但对于下拉列表,我认为MatLab的解决方案更好:

MatLab drop-down list

是否有一种简单的方法在Qt中实现类似的结果,还是我必须设置自定义模型和视图来实现这个目的?
1个回答

6

我几年前就做过这个。应该可以正常工作。

//determinge the maximum width required to display all names in full
int max_width = 0;
QFontMetrics fm(ui.comboBoxNames->font());
for(int x = 0; x < NamesList.size(); ++x)
{
    int width = fm.width(NamesList[x]);
    if(width > max_width)
        max_width = width;
}
if(ui.comboBoxNames->view()->minimumWidth() < max_width)
{
    // add scrollbar width and margin
    max_width += ui.comboBoxNames->style()->pixelMetric(QStyle::PM_ScrollBarExtent);
    max_width += ui.comboBoxNames->view()->autoScrollMargin();
    // set the minimum width of the combobox drop down list
    ui.comboBoxNames->view()->setMinimumWidth(max_width);
}

使用 ui.comboBoxNames->itemText 替换 NamesList 后可以正常工作。 - FourtyTwo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接