问题描述
- qt5.5执行ui->tableView->setModel(model)提示意外停止
-
qt5.5使用QSQLTE,使用QSqlTableModel查询数据库,一旦执行让tableview中显示数据库数据的语句ui->tableView->setModel(model),
运行就提示已停止工作,求解。
ui界面只有一个tableview。
工程文件结构如图:
代码如下:
1.widget.cpp中
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { model = new QSqlTableModel(this); model->setTable("student"); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->select(); ui->tableView->setModel(model); /*QTableView *view = new QTableView; view->setModel(model); view->show();*/ //ui->setupUi(this); } Widget::~Widget() { delete ui; }
2.main.cpp
#include "widget.h" #include <QApplication> #include "database.h" #include <QTextCodec> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForLocale(QTextCodec::codecForLocale()); if(!createConnetion()) return 1; Widget w; w.show(); return a.exec(); }
3.database.h中
#ifndef DATABASE_H #define DATABASE_H #include <QSqlDatabase> #include <QSqlQuery> #include <QObject> static bool createConnetion() { QSqlDatabase db= QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("database.db"); if(!db.open()) return false; QSqlQuery query; query.exec(QObject::tr("create table student (id int primary key,name vchar)")); query.exec(QObject::tr("insert into student values (0,'fece0')")); query.exec(QObject::tr("insert into student values (1,'fece1')")); query.exec(QObject::tr("insert into student values (2,'fece2')")); return true; } #endif // DATABASE_H
4.widget.h中
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QSqlTableModel> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private: Ui::Widget *ui; QSqlTableModel *model; }; #endif // WIDGET_H
解决方案
似乎没有人回答,没有人会?
时间: 2024-11-02 23:34:45