2012-08-31 201 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中创建了这两者,它们仅在程序结束时被销毁。