界面-qt5.5执行ui->tableView->setModel(model)提示意外停止

问题描述

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

界面-qt5.5执行ui-&amp;gt;tableView-&amp;gt;setModel(model)提示意外停止的相关文章

Qt UI界面改了,但UI界面不更新

/**************************************************************************** * Qt UI界面改了,但UI界面不更新 * 声明: * 有时候我们会直接拿别人的Qt项目过来参考修改,但是有时候会遇到UI界面 * 修改了,但是程序运行的时候总是原来的UI界面,这时候需要用uic重新编译一下 * 我们修改了的ui界面文件. * * 2015-10-21 晴 深圳 南山平山村 曾剑锋 ********************

如何在调用CAD,并在CAD中调用lisp时不弹出CAD界面?全部执行后再显示?

问题描述 如何在调用CAD,并在CAD中调用lisp时不弹出CAD界面?全部执行后再显示?我是这样做的AutoCAD.AcadApplicationClasscadApp=newAutoCAD.AcadApplicationClass(); //2004.2005Application.DoEvents();//cadApp.Documents.Application.Visible=true;//CAD成图cadApp.Documents.Open(sFileName,falseasobjec

关于java界面中按钮执行事件的问题

问题描述 关于java界面中按钮执行事件的问题 我用JAVA在一个包中写了MultiThreadMatrix.java和Jiemian.java.MultiThreadMatrix.java是一个并行矩阵计算程序,怎么让Jiemian.java中的一个按钮b3,点击b3执行MultiThreadMatrix.java,并将结果输出在Jiemian.java的文本框中. MultiThreadMatrix.java的打印的结果是,先让你输入想建立的线程个数,然后输出每个线程计算哪一行. 下面是Mu

翻转吧,界面!-3D UI概述

随着技术发展,界面越来越简易化,二维的操作难以提供更好的交互体验,因此平面化的操作界面转向3D 空间维度发展,我们又迎来的了新的时代,一场革命性新的交互体验:本次分享,作为3D UI的概述,以下就整体的来了解下3D UI. 图1:如何定义3D 什么是3D 我们首先了解下什么是3D:一般而言,3D也称为三次元.三维空间:日常生活中可指由长.宽.高.3个维度所构成的空间,而且日常生活中使用"三维空间"一词,常常是指三维的欧几里得空间:3D 这个空间几何概念加上UI人机交互界面这个概念组成新

CodeFirst写界面——自己写客户端UI库

何谓CBS程序 CBS程序就是Client+Browser+Service的程序 纯CS程序写界面,有各种难处,那么我就在Client端引入Browser,让Browser渲染基于HTML的UI界面 何谓WUI 就算用用HTML渲染UI界面,那么开发人员还是要掌握HTML+CSS+JS的知识,这些知识还是比较复杂的 WUI库就是把HTML+CSS+JS封装成起来,组成一个界面元素库,(类似于Extjs和easyui) 意图是让开发人员就只要掌握C#代码,就能写出漂亮的UI界面 第一步:WUI库中

界面-Qt5打印,却生成PDF文档

问题描述 Qt5打印,却生成PDF文档 在自己机器上运行好好的,打印预览都OK,但是打包后去别的机器上后,点击打印后,预览界面还是正常的,但是选择打印机那个标准提示框不见了,点击打印那个按钮,直接让我保存为PDF格式文件,怎么回事?? 电脑打印机可以使用,打印机也设置为默认了 void Print::printInfor(int n) { /* QPrinter printer( QPrinter::PrinterResolution ); printer.setPageSize(QPrinte

为何一段Sql语句,直接在Plsql可以执行成功,但用Asp.net链接Oracle提示缺少右括号

问题描述 有没有大神懂的?紧急求助,因Sql代码比较特殊,可以站内信 解决方案 解决方案二:是在下输了解决方案三:调试的时候把语句拿出来看跟在plsql里面是一样的吗

执行exec dbms_logmnr_d.build(&#039;Logminer.ora&#039;,&#039;file directory&#039;),提示下标超界

完整错误信息如下, SQL> exec dbms_logmnr_d.build('Logminer.ora','file directory') BEGIN dbms_logmnr_d.build('Logminer.ora','file directory'); END; * ERROR 位于第 1 行: ORA-06532: 下标超出限制 ORA-06512: 在"SYS.DBMS_LOGMNR_D", line 793 ORA-06512: 在line 1 解决办法为: 1

Spring源码导入MyEclipse

一,安装Gradle      解压之后,配置GRADLE_HOME:    之后在Path中加入:       cmd监测是否安装成功:输入 gradle            出现上面结果表示安装成功. 二,下载编译spring源码到MyEclipse     在项目目录下,执行: G:\各类工程文件\java\SpringSourceAnaly>gitclone git://github.com/spring-projects/spring-framework.git 下载完成之后,执行源