Qt笔记——数据库的图形界面

1将读取的数据通过表格的方式显示出来

#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 slots:
    void on_BtnAdd_clicked();

    void on_BtnSure_clicked();

    void on_BtnCancel_clicked();

    void on_BtnDel_clicked();

    void on_BtnFind_clicked();

private:
    Ui::Widget *ui;
    QSqlTableModel *model;
};

#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>
#include <QSqlQuery>
#include <QVariantList>
#include <QSqlTableModel>
#include <QSqlRecord>
#include <QItemSelectionModel>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //打印Qt支持的数据库驱动
    qDebug()<<QSqlDatabase::drivers();
    //添加Sqlite数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    //设置数据库
    db.setDatabaseName("../info.db");

    //打开数据库
    if(!db.open())
    {
        QMessageBox::warning(this,"error",db.lastError().text());
        return;
    }

    //设置模型
    model = new QSqlTableModel(this);
    model->setTable("student");//指定使用哪个表
    //把model->放在view
    ui->tableView->setModel(model);
    //显示model的数据
    model->select();
    model->setHeaderData(0,Qt::Horizontal,"学号");

    //设置model的编辑模式,手动提交修改
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);

    //设置view中的数学库不允许修改
    //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_BtnAdd_clicked()
{
    //添加空记录
    QSqlRecord record = model->record();//获取空记录
    //获取行号
    int row = model->rowCount();
    model->insertRecord(row, record);
}

void Widget::on_BtnSure_clicked()
{
    model->submitAll();//提交动作
}

void Widget::on_BtnCancel_clicked()
{
    model->revertAll(); //取消所有动作
    model->submitAll(); //提交所有动作
}

void Widget::on_BtnDel_clicked()
{
    //获取选中的模型
    QItemSelectionModel *sModel = ui->tableView->selectionModel();
    //取出模型中的索引
    QModelIndexList list = sModel->selectedRows();
    //删除所有选中行
    for(int i = 0; i<list.size();i++)
    {
        model->removeRow(list.at(i).row());
    }
}

void Widget::on_BtnFind_clicked()
{
    QString name = ui->lineEdit->text();
    QString str = QString("name = ‘%1‘").arg(name);//单引号不能忘
    model->setFilter(str);
    model->select();
}

原文地址:https://www.cnblogs.com/dalanjing/p/8849706.html

时间: 2024-08-04 07:39:15

Qt笔记——数据库的图形界面的相关文章

QT笔记:数据库总结(一)

QT笔记:数据库总结(一)http://blog.csdn.net/reborntercel/article/details/6991147 http://www.devbean.net/2013/06/qt-study-road-2-sql-model/

QT笔记:数据库总结(三)之SQL模型类-QSqlTableModel模型

QSqlTableModel类继承至QSqlQueryModel类,该类提供了一个可读写单张SQL表的可编辑数据模型,功能:修改,插入,删除,查询,和排序 常用函数 QVariant headerData ( int section,Qt::Orientation orientation, int role = Qt::DisplayRole ) const  获取水平头或垂直头标题 bool setHeaderData ( int section,Qt::Orientation orienta

9款最好用的MySQL数据库客户端图形界面管理工具,第三款我用了10年

MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考. MySQL是一个非常流行的小型关系型数据库管理系统,2008年1月16号被Sun公司收购.目前MySQL被广泛地应用在Internet上的中小型 网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. ? 1.phpMyAdmin phpMyAdmin

Oracle 数据库创建(图形界面操作)

Oracle 创建数据库图文分解: 1. 选择所有程序->Oracle-OraDb11g_home1->Configuration and Migration Tools -> Database Configuration Assistant, 如下图所示: 2. 步骤1完成后出现如下图所示,点击一下步. 3. 如下图,选择create a Database,点击 一下步 4 选择Custom Database,点击一下步 5 填写 Global Database Name 和SID,如

学会写出"图形界面+数据库"的程序要多长时间?

[来信] 贺老师好,我也是在自学c++看了您写的启蒙一,感触很大,太谢谢了,我现在做网络运维,会接触到部份erp的内容,,想请老师指点下.从刚开始学c++到能写出个图形化界面并与数据库简单交互的,这样一个小程序,如果不考虑数据库方面的问题,正常要用多长时间,,? [回复] 第一个时间问题,我觉得是因人而异的.这要看个人以前的积累,以及学习能力.所以我无法为你做的估计,事实上,这确实因人而异. 我昨天在手机上看到你的私信时,想到的就是这些.今天开电脑要回复了,想想这是个很有意思的问题,多说一点.

PyGObject笔记1——用Python写图形界面

PyGObject is a Python extension module that gives clean and consistent access to the entire GNOME software platform through the use of GObject Introspection. PyGObject provides full support of GObject Introspection and all of its features (callbacks,

图形界面库Windows Forms MFC WTL WxWidgets Qt GTK 综合比较

图形界面库Windows Forms. MFC.WTL. WxWidgets.Qt.GTK 综合比较见下表: 总结: GTK+主要用在X Window上,整个设计的架构和许多概念和MFC以及一般 Windows 上的程序开发大异其趣,入门门槛较高,而且最主要的特色是,它用不具有物件功能的纯C 语言,模拟物件导向.所以写起来比较复杂艰涩,而且充满大量巨集,使用和除错都不是很容易,但优点则是可以用C,不需C++,如果和Win32 SDK比较,不会难学多少,缺点是不易上手使用,而且文件比较缺,架构又非

鸟哥linux私房菜学习笔记,U盘安装centos5.3不能正常进入图形界面的问题

前面说过自己成功引导了centos系统,现在进入启动界面,首次进入会进行相关设置,按照步骤一步一步完成,取消完光盘安装,点击下一步,就进入下面这个界面,没有登录框...没错!怎么蓝屏了,这可是linux啊! 可能第一次初始化慢,然而十几分钟过去了,依旧一成不变...懵圈了,按书上切换命令行模式也没反应,重启了也是一样卡在这个界面,没办法了,我重装吧. 再次重装很顺利,然后启动,接着首次设置,最后...还是卡到了这个界面.不会是我U盘启动盘制作有问题吧,果断重新制作,然后再次重装启动...不出所料

非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件

用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等图形名称(坐标1234);g.file图形名(坐标123)} 2.设置字体-Font类 (1)定义font:Font myfont=new Font(“字体”,”样式”,字号); 例如:Font myfont=new Font(“宋体”,Font.BOLD,12); (2)引用定义的Font:类/容