为什么没有调用MyModel :: data()(继承QSqlQueryModel)

时间:2012-12-01 22:36:30

标签: qt view model qtableview model-view

嗨我无法弄清楚为什么在填充QTableView时永远不会调用data()函数

我将QSqlQueryModel子类化。标题如下:

class TicketModel : public QSqlQueryModel
{
    Q_OBJECT
public:
    explicit TicketModel(QObject *parent = 0);

    QVariant data(const QModelIndex &index, int role);
    QVariant headerData(int section, Qt::Orientation orientation, int role) const;

};

在主窗口中,我将模型设置为表格

TicketModel *model = new TicketModel();
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(model);

QSqlQuery *query = _tf->search(1); 
model->setQuery(*query); 

_ui->dashTable->setModel(proxyModel);    // <<<<<<<<<<<<<< I setting model here too, didn't work
_ui->dashTable->setSortingEnabled(true);              
_ui->dashTable->horizontalHeader()->setVisible(true);  
_ui->dashTable->setSelectionBehavior(QAbstractItemView::SelectRows);

调用TicketModel::headerData(...)但在创建表时从不调用TicketModel::data(...)。为什么?我怎样才能让它被召唤?

我希望我只是忽略了一些简单的事情,但我已经尝试了几个小时来弄明白。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

你签名错了。你需要一个const。

QVariant数据(const QModelIndex&amp; index,int role = Qt :: DisplayRole)const