qt QStandardItemModel data() 未被调用
qt QStandardItemModel data() not being called
我有非常简单的自定义模型,从QStandardItemModel
派生出来。函数rowCount
和columnCount
被多次调用,而其余的函数,特别是data()
都不会被调用。我找不到原因。
#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 &);
};
这叫什么:
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();
}
我认为不可能在QStandardItemModel中对数据进行子类化。
我只是尝试将我自己的QAbstractItemModel更改为QStandardItemModel,并且数据也没有被调用。
尝试使用 QAbstractItemModel。我认为您已经实现了使用QAbstractItemModel所需的几乎所有内容
您需要实现索引和父级。由于您没有分层模型,因此父级应始终返回无效索引。
它可以像这样实现:
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
}
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 什么时候调用析构函数
- 如何用参数值调用函数(仅在运行时已知)
- std::cout.imbue()多重调用
- 函数何时会在c++中包含stack_Unwind_Resume调用