使视图的宽度适合QComboBox的最长项目

p.i*_*.g. 3 c++ qt

我有一个QComboBox包含长字符串的字符串.长意味着琴弦比QComboBox我的宽度宽GUI.在这种情况下,Qt将以这种方式显示项目:

QComboBox

之前我正在使用的MatLab用户不太友好,GUI但对于下拉列表,我认为MatLab解决方案更好:

MatLab下拉列表

有没有简单的方法来实现类似的结果,Qt或者我是否必须为此目的设置自定义模型和视图?

doq*_*tor 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);
}
Run Code Online (Sandbox Code Playgroud)