2

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)たが、役に立ちませんでした。

編集:カスタム スロットを使用した現在の方法は適切に機能しますが、シグナル/スロットを含まない方法があるかどうかを尋ねています。

4

2 に答える 2

2

ユーザーがテキストを変更したときに自動的にテキストを設定するには、スロットを次のように編集します。

void comboBoxEditTextChanged( const QString& text ) 
{
    int index = someComboBox->findText(text);
    if(index != -1)
    {
      someComboBox->setCurrentIndex(index);
     }
    someComboBox->setItemText( someComboBox->currentIndex(), text );
}

これで問題が解決することを願っています

于 2012-07-20T09:01:53.307 に答える
-1

QComboBox を使用してアイテムを手動で追加できます

combo->additem("X"); 

combo->addItem(QString Y);

その中のアイテムの最大数を管理できます。詳細は以下のリンクよりお進みください。

リンク

だから、あなたのスロットでは、

void comboBoxEditTextChanged( const QString& text ) 
{
    someComboBox->addItem(text);
}
于 2012-07-20T08:18:28.383 に答える