我想将 QComboBox 的文本设置为某些自定义文本(不在 QComboBox 的列表中),而不将此文本添加为 QComboBox 的项目。
此行为可以在可编辑的 QComboBox 上实现QComboBox::setEditText(const QString & text)
。
然而,在不可编辑的 QComboBox 上,此函数不执行任何操作。
是否可以以编程方式将不可编辑的 QComboBox 的显示/编辑文本设置为不在其列表中的内容?
或者我是否必须找到另一种方法(例如使用带有弹出菜单的 QPushButton)
编辑:考虑一个可编辑的 QComboBoxInsertPolicy
QComboBox::NoInsert
。如果用户输入内容并按 Enter 键,则将使用输入的值,但不会将其添加到列表中。我想要的是这种行为以编程方式更改“当前”文本,但不允许用户自己输入某些文本。用户可以从 QComboBox 中选择某些内容,但一段时间后,我可能想覆盖“当前”文本。
当我子类化时我遇到了同样的问题QComboBox
制作复选框的组合框。我编写了一个小函数来以编程方式更改组合框中显示的文本,但我不想让用户编辑该文本。解决方案是将组合框设置为可编辑:
this->setEditable(true);
and the QComboBox::lineEdit()
只读。参考函数:
void CheckedComboBox::setText(QString text)
{
QLineEdit *displayedText = this->lineEdit();
displayedText->setText(text);
displayedText->setReadOnly(true);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)