我需要获取QStringList或在QString中包含所有QComboBox的数组。

我找不到执行此操作的QComboBox方法,实际上我什至找不到执行此操作的QAbstractItemModel方法。

这真的是我唯一的选择:

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

for( auto i = 0; i < list.size(); i++ )
{
    list[i] = myQComboBox.itemText( i );
}

最佳答案

QAbstractItemModel可以包含图像,树以及可以保留在QVariant中的其他类型的数据。这就是为什么您无法从中获取QStringList的原因。这是没有意义的。

但是,有一个从QStringListModel继承的QAbstractItemModel类,用于保留字符串。如您所料,它具有stringList()方法。
QComboBox允许您将其使用的默认模型更改为另一种。默认情况下,它使用QStandardItemModel。创建组合框后,将其更改为字符串列表模型。

 QStringListModel* cbModel = new QStringListModel();
 comboBox->setModel(cbModel);

现在您可以得到想要的东西:
QStringList list = cbModel->stringList();

09-28 12:06