• 5477阅读
  • 5回复

自定义一个model重写的data函数为何不被调用?? [复制链接]

上一主题 下一主题
离线starter
 
只看楼主 倒序阅读 楼主  发表于: 2012-07-18
关键词: 求助QT4
重写了如下几个函数
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
QVariant headerData(int section,Qt::Orientation orientation, int role = Qt::DisplayRole)
  const;

最后将模型加入QTableView
historyView->setModel(&model);//historyView是一个QTableView

但运行后该视图并不显示,单步调试发现data居然都未调用,这是为什么啊?请各位高手指点。。
离线newedition
只看该作者 1楼 发表于: 2012-07-18
同求,我最近也为这问题发愁。。。。。。。。。。
离线starter
只看该作者 2楼 发表于: 2012-07-18
想了好久终于被我解决了,跟大家分享一下吧,其实原因很简单,就是创建模型的时候没有指定父
窗口。
之前是这样:MyModel model;
改成:MyModel *model = new MyModel(this);  
关键在于指定父窗口this。
离线newedition
只看该作者 3楼 发表于: 2012-07-18
嗯嗯  多谢
离线newedition
只看该作者 4楼 发表于: 2012-07-18
我的也加THIS了  model=new QSqlRelationalTableModel(this,db1);

//单元格居中
QVariant  SetupTaskDialog::data(const QModelIndex & item, int role) const
{
    QVariant value=model->data(item,role);
    if(role==Qt::TextAlignmentRole)
    {
        value=(Qt::AlignCenter);
        return value;
    }
    return value;
}

加了这个后,项目不启动了
离线passion_wu
只看该作者 5楼 发表于: 2012-07-18
我觉得指没指定父窗口跟data函数调没调用没有必然联系。
快速回复
限100 字节
 
上一个 下一个