2014-01-25 32 views
0

我有一個自定義表模型,它擴展了QAbstractTableModel。我實施了data(),rowCount()columnCount()QTableModel數據未被調用

這是我的模型:

point_data_view_model::point_data_view_model(QObject *parent) : 
    QAbstractTableModel(parent) 
{ 
} 

int point_data_view_model::rowCount(const QModelIndex & /*parent*/) const 
{ 
    return 2; 
} 

int point_data_view_model::columnCount(const QModelIndex & /*parent*/) const 
{ 
    return 3; 
} 

QVariant point_data_view_model::data(const QModelIndex &index, int role) const 
{ 
    if (role == Qt::DisplayRole) 
    { 
     return QString("Row%1, Column%2") 
        .arg(index.row() + 1) 
        .arg(index.column() +1); 
    } 
    return QVariant(); 
} 

但是,當我想表明我的形式表視圖,不顯示任何內容。

這是形式的構造函數:

SelectWindow::SelectWindow(QWidget *parent) : 
    QMainWindow(parent) 
    ,ui(new Ui::SelectWindow) 
{ 
    ui->setupUi(this); 

    point_data_view_model myModel; 

    ui->tableView->setModel(&myModel); 
    myModel.timerHit(); 
    ui->tableView->show(); 


} 

換句話說,在我的模型數據的功能不被調用。

我錯過了什麼?

回答

4
point_data_view_model myModel; 

這是一個很大的問題。 myModel是該構造函數的本地對象,當函數退出時將被銷燬。只要需要使用該模型,您需要將該模型存儲在某個地方 - 您的SelectWindow的成員變量應該是合適的。

2

您正在創建myModel堆棧。在撥打ui->tableView->show();後立即刪除。因此,視圖會丟失模型,並且沒有機會致電data。你應該使用new創建myModel

point_data_view_model* myModel = new point_data_view_model(); 
+1

小心泄漏:視圖不會刪除模型,所以您需要自己處理。 – Mat