获取QComboBox的内容

Jon*_*Mee 8 c++ arrays qstring qt qcombobox

我需要得到一个QStringList或一个包含所有QStrings 的数组QComboBox.

我找不到QComboBox这样做的方法,实际上我甚至找不到QAbstractItemModel这样做的方法.

真的是我唯一的选择:

std::vector< QString > list( myQComboBox.count() );

for( auto i = 0; i < list.size(); i++ )
{
    list[i] = myQComboBox.itemText( i );
}
Run Code Online (Sandbox Code Playgroud)

Dow*_*Dev 7

你的答案看起来很好,但你也可以使用QStringList而不是vector.

QStringList itemsInComboBox; 
for (int index = 0; index < ui->combo_box->count(); index++)
    itemsInComboBox << ui->combo_box->itemText(index);
Run Code Online (Sandbox Code Playgroud)


Eze*_*zee 6

QAbstractItemModel可以包含图像,树以及其他可以保留在其中的数据QVariant。这就是为什么你不能从中得到一个QStringList。这是没有意义的。

但是,有一个QStringListModel继承自该类的QAbstractItemModel用于保留字符串的类。如您所料,它具有method stringList()

QComboBox允许您将其使用的默认模型更改为另一种。默认情况下使用QStandardItemModel。创建组合框后,将其更改为字符串列表模型。

 QStringListModel* cbModel = new QStringListModel();
 comboBox->setModel(cbModel);
Run Code Online (Sandbox Code Playgroud)

现在您可以得到想要的东西:

QStringList list = cbModel->stringList();
Run Code Online (Sandbox Code Playgroud)