我尝试在程序中使用QTableView。我已经在我开始的另一个测试项目中修复了模型中的所有错误。
现在,我尝试在我的主项目中插入模型和QTableView,但与其他项目相比,QTableView只打开半秒然后立即关闭!但是,相同的代码在testproject中运行良好。
这是我在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...
}
}
}
Model是QAbstractTableModel。
有谁知道,为什么TableView会关闭?
谢谢!
答案 0 :(得分:1)
您需要在堆上创建模型和视图,否则它们将在on_ButtonOK_clicked
的末尾超出范围并将被销毁。
它适用于您的测试项目,因为您在main
中创建了两者,并且它们仅在程序结束时被销毁。