首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qt QStandardItemModel数据()未被调用

qt QStandardItemModel数据()未被调用
EN

Stack Overflow用户
提问于 2013-09-16 23:00:55
回答 1查看 1.5K关注 0票数 0

我有来自QStandardItemModel的非常简单的定制模型。函数rowCountcolumnCount被多次调用,而其余的函数都没有调用,特别是从未调用过data()。我找不到原因。

代码语言:javascript
复制
#include <IBAdditions/IB_events.h>

#include <QtGui/QStandardItemModel>
#include <QtGui/QStandardItem>
#include <QtCore/QtCore>

#include <vector>

/**
 * model which allows for display 
 * of available data streams as tickers
 */
class TickerDisplayModel : public QStandardItemModel {

Q_OBJECT
 public:
     TickerDisplayModel(std::vector<IBAdditions::ContractEvent> availableTickers, QObject *parent = 0);
     int rowCount(const QModelIndex &parent = QModelIndex()) const ;
     int columnCount(const QModelIndex &parent = QModelIndex()) const;
     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
     bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
     Qt::ItemFlags flags(const QModelIndex & index) const;
 private:
     int m_;
     int n_;
     std::vector<IBAdditions::ContractEvent>& availableTickers_;
 signals:
     void editCompleted(const QString &);
};

这是如何被称为:

代码语言:javascript
复制
SubscribeToDataGUI::SubscribeToDataGUI(QWidget* parent) : QDialog(parent) {
    widget_.setupUi(this);
    IBAdditions::ContractEvent c;
    c.symbol = "EUR"; c.currency = "USD"; c.event_ = IBAdditions::TickPrice;
    availableTickers_.push_back(c);
    model_.reset(new TickerDisplayModel(availableTickers_));
    widget_.listView->setModel(model_.get());
    widget_.listView->show();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-17 07:41:55

我认为不可能在QStandardItemModel中对数据进行子类分类。

我只需尝试将自己的QAbstractItemModel更改为QStandardItemModel,数据也不会被调用。

尝试使用QAbstractItemModel。我认为您已经实现了使用QAbstractItemModel所需的几乎所有东西。

您需要实现索引和父级。由于您没有人工模型,所以父级应该始终返回无效的索引。

它可以这样实现:

代码语言:javascript
复制
    QModelIndex TickerDisplayModel::index(int row, int column, const QModelIndex &parent) const
    {
       return hasIndex(row, column, parent) ? createIndex(row, column, 0) : QModelIndex();
    }

    QModelIndex TickerDisplayModel::parent(const QModelIndex &child) const
    {
        return QModelIndex(); // since no hiearchy model, this should always return invalid index
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18838726

复制
相关文章

相似问题

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