我有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)
,但这没有帮助。
编辑:使用自定义插槽的当前方法正常工作 - 但我问的是否有一种不涉及任何信号/插槽的方法。
答案 0 :(得分:0)
QComboBox可以使用
手动添加项目combo->additem("X");
combo->addItem(QString Y);
而您可以管理其中的最大项目数。请仔细阅读以下链接。
所以,在你的插槽中,
void comboBoxEditTextChanged( const QString& text )
{
someComboBox->addItem(text);
}
答案 1 :(得分:0)
要在USER更改时自动设置文本,我们可以按如下方式编辑您的插槽:
void comboBoxEditTextChanged( const QString& text )
{
int index = someComboBox->findText(text);
if(index != -1)
{
someComboBox->setCurrentIndex(index);
}
someComboBox->setItemText( someComboBox->currentIndex(), text );
}
我希望这可以解决您的问题