【发布时间】:2012-07-20 08:02:48
【问题描述】:
我有一个QComboBox,我想“自动”编辑它。也就是说,每次用户手动更改当前项目的文本时,该文本应该自动“落入”底层模型。
到目前为止,我已经通过自定义信号处理程序实现了这一点:
void setupUi() {
...
connect( someComboBox,
SIGNAL(editTextChanged(QString)),
SLOT(comboBoxEditTextChanged(QString)) );
...
}
void comboBoxEditTextChanged( const QString& text ) {
someComboBox->setItemText( someComboBox->currentIndex(), text );
}
所以我想知道,有没有可能用更少的代码做到这一点?我试过QComboBox::setInsertPolicy(QComboBox::InsertAtCurrent),但没有帮助。
编辑:当前具有自定义插槽的方法可以正常工作 - 但我想问是否有一种方法不涉及任何信号/插槽。
【问题讨论】:
-
模型/视图模式的重点是视图(QComboBox)仅显示数据。因此,在您给定的示例中,您仅更改 QCombobox 内部缓冲区中的数据(不应更改模型)。您的插槽应该在模型上运行,而不是在视图上运行
标签: c++ qt user-interface qcombobox