c++ - 使 View 的宽度适合 QComboBox 的最长项目

标签 c++ qt

我有一个包含长字符串的QComboBox。 Long 表示字符串比我的 GUI 上的 QComboBox 的宽度宽。在这种情况下,Qt 将以这种方式显示项目:

QComboBox

以前我使用的是 MatLab,它的 GUI 用户友好度较低,但对于下拉列表,我认为 MatLab 解决方案更好:

MatLab drop-down list

是否有任何简单的方法可以在 Qt 中实现类似的结果,或者我是否必须为此目的设置自定义模型和 View ?

最佳答案

几年前我做过。应该工作正常。

//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);
}

关于c++ - 使 View 的宽度适合 QComboBox 的最长项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817328/

相关文章:

c++ - 是否有一个标准容器允许在不使迭代器失效的情况下插入元素?

c++ - fatal error LNK1104 : cannot open file 'opencv_calib3d220d.obj'

c++ - 为什么qmap使用skiplist而不是ob rb-tree?

c++ - Boost Spirit QI 与弦乐和跳绳有关的问题

c++ - 错误 : forward declaration, 如何访问指针

c++ - 为什么我不能在类中有静态对象?

Qt:在手动激活应用程序之前不会出现主窗口

c++ - 程序没有按顺序通过构造函数,从而导致未初始化的变量

android - 部署 Android 应用程序 Qt 5.1

c++ - 如何获取使用 QProcess 调用的程序的返回标准输出?