我想将 QComboBox 的文本设置为一些自定义文本(不在 QComboBox 的列表中),而不将此文本添加为 QComboBox 的项目。此行为可在带有QComboBox::setEditText(const QString & text). 但是,在不可编辑的 QComboBox 上,此函数不执行任何操作。
是否可以以编程方式将不可编辑的 QComboBox 的显示/编辑文本设置为不在其列表中的内容?还是我必须找到另一种方式(例如使用带有弹出菜单的 QPushButton)
编辑:考虑一个可编辑的 QComboBox 与InsertPolicy QComboBox::NoInsert. 如果用户输入内容并按回车键,输入的值将被使用但不会添加到列表中。我想要的是这种行为以编程方式更改“当前”文本,但不允许用户自己输入一些文本。用户可以从 QComboBox 中选择一些内容,但一段时间后,我可能想要覆盖“当前”文本。
当我子类化QComboBox以制作复选框的组合框时,我遇到了同样的问题。我编写了一个小函数来以编程方式更改组合框中显示的文本,但我不想让用户能够编辑该文本。解决方案是将组合框设置为可编辑:
this->setEditable(true);
Run Code Online (Sandbox Code Playgroud)
和QComboBox::lineEdit()只读。参考函数:
void CheckedComboBox::setText(QString text)
{
QLineEdit *displayedText = this->lineEdit();
displayedText->setText(text);
displayedText->setReadOnly(true);
}
Run Code Online (Sandbox Code Playgroud)
我最终使用了QPushButton带有弹出菜单的。QComboBox我将我的列表中的项目添加QActions到菜单中。QPushButton可以在 a上设置菜单
QPushButton::setMenu(QMenu* menu)
Run Code Online (Sandbox Code Playgroud)
。按钮上的文本可以轻松设置
QPushButton::setText(const QString &)
Run Code Online (Sandbox Code Playgroud)
并且与弹出菜单中的文本无关,这正是我想要的。
| 归档时间: |
|
| 查看次数: |
8683 次 |
| 最近记录: |