使用常规QComboBox填充项目,如果currentIndex设置为-1,则窗口小部件为空.在组合框中显示初始描述性文本(例如" - 选择国家 - "," - 选择主题 - "等)将非常有用,这些文本未在下拉列表中显示.
我在文档中找不到任何内容,也没有任何先前的答案问题.
Hos*_*ork 27
在Combo Box API中似乎没有预料到这种情况.但是由于基础模型的灵活性,您似乎应该能够将--Select Country--添加为第一个"合法"项目,然后使其不被用户选择:
QStandardItemModel* model =
qobject_cast<QStandardItemModel*>(comboBox->model());
QModelIndex firstIndex = model->index(0, comboBox->modelColumn(),
comboBox->rootModelIndex());
QStandardItem* firstItem = model->itemFromIndex(firstIndex);
firstItem->setSelectable(false);
Run Code Online (Sandbox Code Playgroud)
根据您想要的精确行为,您可能希望使用setEnabled.或者我个人更喜欢它,如果它只是一个不同的颜色项目,我可以将其设置回:
Qt,如何更改QComboBox的一个项目的文本颜色?(C++)
(当我点击某些东西然后被困在我无法回到原地的地方时,我不喜欢它,即使它是一个没有选择的状态!)
您可以执行类似操作的一种方法是设置占位符:
comboBox->setPlaceholderText(QStringLiteral("--Select Country--"));
comboBox->setCurrentIndex(-1);
Run Code Online (Sandbox Code Playgroud)
这样你就有了一个无法选择的默认值。
| 归档时间: |
|
| 查看次数: |
9062 次 |
| 最近记录: |