我需要获取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();