【问题标题】:How do I set the QComboBox width to fit the largest item?如何设置 QComboBox 宽度以适合最大项目?
【发布时间】:2011-03-10 06:29:38
【问题描述】:

我有一个QComboBox,我用QString 填写:

comboBox->addItem(someString);

当我启动我的 GUI 应用程序时,QComboBox 的宽度始终为 70,即使最小的项目要大得多。例如,如何将QComboBox 的宽度动态设置为comboBox 中最大的QString

编辑:

经过进一步测试,我找到了以下解决方案:

// get the minimum width that fits the largest item.
int width = ui->sieveSizeComboBox->minimumSizeHint().width();
// set the ComboBoxe to that width.
ui->sieveSizeComboBox->setMinimumWidth(width);

【问题讨论】:

  • 另外,如果你想保持组合框大小不变,但扩大下拉宽度以适应最长的字符串,你可以设置视图的最小宽度:ui->sieveSizeComboBox->view()->setMinimumWidth(width);
  • 感谢您的评论,正是我所需要的。

标签: c++ user-interface qt qcombobox


【解决方案1】:

我正在寻找一种解决方案,只更改组合框下拉菜单的大小以适应最大的文本,而不改变组合框本身的大小。

您的建议 (@Linoliumz) 确实帮助我找到了解决方案。这里是 : 假设您有一个名为 cb 的组合框:

C++:

width = cb->minimumSizeHint().width()
cb->view().setMinimumWidth(width)

PyQT:

width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)

【讨论】:

    【解决方案2】:

    Qt (4.6) 在线文档对QComboBox 有这样的说法:

    enum    SizeAdjustPolicy  { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }
    

    建议

    1. 确保SizeAdjustPolicy 实际被使用

    2. 将枚举设置为AdjustToContents。正如您提到的 .ui 文件,我建议在 Designer 中执行此操作。通常,您的构造函数中不应该有任何关于您在 Designer 中所做的事情的花哨。

    【讨论】:

    • 请告诉我如何在 Qt 3.3.6 上执行此操作?
    【解决方案3】:

    根据docs,默认SizeAdjustPolicyAdjustToContentsOnFirstShow,所以也许您正在显示它然后填充它?

    要么在显示之前先填充它,要么尝试将策略设置为QComboBox::AdjustToContents

    编辑:

    顺便说一句,我假设您的 QComboBox 布局合适,例如。 QHBoxLayout,以便实际使用大小提示/策略。

    【讨论】:

    • 谢谢,是的,QComboBox 在 QHBoxLayout 中。我尝试修改 SizeAdjustPolicy 但没有效果,我还尝试在调用 ui->setupUi(this); 之前填充 QComboBox;在构造函数中,但程序崩溃了。 QComboBox 是使用 Qt Creator 创建的,我不知道是否可以在显示之前填充它。
    • 你在组合框中设置了什么SizePolicy
    • 在调用 ui->setupUi(this) 之前尝试填充组合会导致段错误是有道理的,因为 QComboBox 对象尚未实例化。将 AdjustPolicy 设置为 QComboBox::AdjustToContents。
    • @Casey 否,此政策无效。我也在 QHBoxLayout 中使用它,显然是在实例化之后但没有
    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2017-09-28
    • 2019-05-13
    相关资源
    最近更新 更多