2012-08-31 194 views
0

我試圖在程序中使用QTableView。我已經修復了我在另一個測試項目中獲得的所有錯誤。QTableView立即關閉

現在,我嘗試在我的主項目中插入模型和QTableView,但與其他項目相比,QTableView只打開了半秒鐘,然後立即關閉!但是,相同的代碼在測試項目中運行良好。

這是我在testproject代碼:

#include <QApplication> 
#include <QTableView> 
#include "start.h" 
#include "mymodel.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QTableView tableView; 
    MyModel myModel(0); 
    tableView.setModel(&myModel); 
    tableView.setSelectionBehavior(QAbstractItemView::SelectRows); 
    tableView.show(); 
    //Start w; 
    //w.show(); 

    return a.exec(); 
} 

而且這是在主項目的相關代碼:

void Startseite::on_ButtonOK_clicked() 
{ 
    switch (ui->menuLeiste->currentIndex()) { 

    case 0: 
    { 
     QTableView tableview; 
     Model myModel(0); 
     tableview.setModel(&myModel); 
     tableview.setSelectionBehavior(QAbstractItemView::SelectRows); 
     tableview.show(); 
     break; 
    } 

    case 1: 
    { 
     // other functions... 
    } 
} 
} 

模型是QAbstractTableModel。

有誰知道,爲什麼TableView關閉?

謝謝!

回答

1

你需要在堆上創建你的模型和視圖,否則它們將在on_ButtonOK_clicked的末尾超出範圍並被銷燬。

它適用於您的測試項目,因爲您在main中創建了這兩者,它們僅在程序結束時被銷燬。