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)
你的答案看起来很好,但你也可以使用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)
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)