6

QComboBox次のように関数を使用してアイテムを追加しようとしてinsertItemsいます:

QStringList sequence_len = (QStringList()
<< QApplication::translate("MainWindow", "1", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("MainWindow", "2", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("MainWindow", "3", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("MainWindow", "4", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("MainWindow", "5", 0, QApplication::UnicodeUTF8)
);

ui->QComboBox->insertItem(0, &sequence_len);

次のエラーメッセージが表示されます。

error: no matching function for call to 'QComboBox::insertItem(int, QStringList*)'

実際、ui->QComboBox->insertItem(Qt-Creator の提案を確認するためにクラスに書き込みを行うと、オプション:(int index, const QStringList & list)が存在しないようです。それで、最初は、私の Qt-Creator がこの機能をサポートしていないからだと思いました。しかし、驚いたことに、ウィジェットQComboBoxを作成した後、Qt-Creator の「デザイン」タブから直接入力すると、同じ機能が で使用されています。QComboBoxui_mainwindow.h

なぜこれが起こっているのですか?この関数を私のクラスにも追加する方法はありますか?

4

3 に答える 3

7

QComboBoxのaddItemsまたはinsertItemsメンバー関数を使用します。// QStringList 引数を取る関数の末尾にsがあることに注意してください。これは、アイテムの追加/挿入です。

LE: QStringList のアドレスを渡さないでください。関数は、ポインターではなく QStringList オブジェクトへの参照を受け取ります。次を使用します。ui->QComboBox->insertItems(0, sequence_len); //no & before sequence_len

QComboBox を埋める完全な例 (tr()適切に設定されていることを考慮して):

QStringList sequence_len = QStringList() << tr("1") << tr("2") << tr("3") << tr("4") << tr("5");
//add items:
ui->QComboBox->addItems(sequence_len);
//insert items into the position you need
//ui->QComboBox->insertItems(0, sequence_len);
于 2013-06-11T12:17:19.150 に答える
2

これを試して:

//Text that you want to QStringList
QStringList list;
list << "a" << "b" << "c";

//Instance of model type to QStringList
QStringListModel *model = new QStringListModel();
model->setStringList(list);

ui->QComboBox->setModel(model);

この場合、QStringList listが のリストになりますsequence_len

于 2014-10-28T15:26:15.770 に答える