可编辑的QComboBox:将编辑文本与项目文本同步

时间:2012-07-20 08:02:49

标签: c++ qt user-interface qcombobox

我有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),但这没有帮助。

编辑:使用自定义插槽的当前方法正常工作 - 但我问的是否有一种不涉及任何信号/插槽的方法。

2 个答案:

答案 0 :(得分:0)

QComboBox可以使用

手动添加项目
combo->additem("X"); 

combo->addItem(QString Y);

而您可以管理其中的最大项目数。请仔细阅读以下链接。

a link

所以,在你的插槽中,

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 );
}

我希望这可以解决您的问题