首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QComboBox阵列访问

QComboBox阵列访问
EN

Stack Overflow用户
提问于 2014-06-04 20:18:06
回答 2查看 1.6K关注 0票数 3

我希望能够在不使用itemText遍历内容的情况下访问QComboBox中的值。

代码语言:javascript
复制
for( auto i = 0u; i < myQComboBox->count(); i++ )
{
    result[i] = myQComboBox->itemText( i );
}

有没有办法访问QComboBox的底层QList,这样我就可以只使用operator[],或者更好的迭代器和基于范围的循环?

EN

回答 2

Stack Overflow用户

发布于 2014-06-05 01:21:00

看起来您在语法上被搁置了:您想用myQComboBox[i]替换myQComboBox->itemText(i)。这很容易做到:

代码语言:javascript
复制
// implementation
class ModelAdapter {
  QPointer<QAbstractItemModel> m_model;
public:
  explicit ModelAdapter(QComboBox & box) : m_model(box.model()) {}
  explicit ModelAdapter(QAbstractItemModel * model) : m_model(model) {}
  QVariant operator[](int i) { return m_model->index(i, 0); }
};

// point of use
ModelAdapter model(myQComboBox);
for( auto i = 0; i < myQComboBox->count(); i++ )
{
    result[i] = model[i];
}

有了一个好的编译器,您可以执行以下操作,并让它生成与直接使用combobox.model->index(i, 0)相同的代码。我不明白它的意义,但是嘿,这是可能的:)

代码语言:javascript
复制
// implementation
class Adapter {
  QAbstractItemModel* m_model;
public:
  explicit Adapter(QComboBox & box) : m_model(box.model()) {}
  explicit Adapter(QAbstractItemModel * model) : m_model(model) {}
  QVariant operator[](int i) { return m_model->index(i, 0); }
};

// point of use
for( auto i = 0; i < myQComboBox->count(); i++ )
{
    result[i] = Adapter(myQComboBox)[i];
}

一个类似的适配器可以为您提供迭代器。

票数 4
EN

Stack Overflow用户

发布于 2014-06-04 20:26:07

您可以使用组合框的模型来检索项数据。下面是一个例子,我将如何做到这一点:

代码语言:javascript
复制
QComboBox combo;
combo.addItem("Item 1");

QAbstractItemModel *model = combo.model();
QModelIndex idx = model->index(0, 0); // Refers to the first item
QString item = model->data(idx).toString(); // Returns 'Item 1'

要访问组合框的第二个或更多项,只需更改index()函数调用中的行号:

代码语言:javascript
复制
QModelIndex idx = model->index(0, 0);
                the row number ^

到目前为止,我还不知道有任何基于迭代器的组合框应用编程接口,但你可以使用QAbstractItemModel的所有功能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24037259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档