【问题标题】:QComboBox - Select no entryQComboBox - 不选择条目
【发布时间】:2016-05-08 22:07:37
【问题描述】:

我的用户界面上有一个 QComboBox,并像这样设置模型:

QStringListModel* model = new QStringListModel;
QStringList stringlist;
stringlist << "Test1" << "Test2" << "Test3";

model->setStringList(stringlist);
ui->comboBox->setModel(model);

现在我想将当前索引更改为无(这样我得到一个空白组合框)。

我已经尝试使用 ui-&gt;comboBox-&gt;setCurrentIndex(-1); 将当前索引设置为 -1,但这会导致 qlist 中的索引超出范围:

ASSERT failure in QList<T>::operator[]: "index out of range", file F:/Qt/5.4/mingw491_32/include/QtCore/qlist.h, line 486

【问题讨论】:

  • 您可以创建自己的模型,该模型将为无效索引返回一个空的QString()。或者只是子类化 QStringListModel 并覆盖 data 方法(并且,可能还有 index 方法)。
  • 看起来像 ui->comboBox->setCurrentIndex(-1);工作得很好。崩溃是由我的代码中的错误引起的。

标签: qt qcombobox


【解决方案1】:

常规(不可编辑)QComboBox 不允许选择“无项目”的状态。选择必须始终有效。

您必须在第一个位置添加一个空字符串项目,并且您可能需要检查此主题以使该虚拟项目不可选:https://stackoverflow.com/a/7633081/3336423


编辑:实际上,似乎完全可以将任何组合框的选择设置为-1(可编辑或不可编辑)。所以不需要像上面建议的那样添加一个空项。

【讨论】:

  • 请在您的答案中添加一个符合 OP 评论“.. ui->comboBox->setCurrentIndex(-1); 工作得很好......”的编辑,接受的答案令人困惑。
  • @MoKanan-ReinstateMonica:完成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
相关资源
最近更新 更多