QTableView 例二(基于 QSqlQueryModel)

22 篇文章 2 订阅
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QTableView>
#include <QSqlQueryModel>
#include <QDebug>
#include <QSqlError>
#include <QSqlQuery>
#include <QHeaderView>
#include <QComboBox>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    database  = QSqlDatabase::addDatabase("QSQLITE");
    database.setDatabaseName("./tableview-deom.db");
    if(database.open())
    {
        qDebug()<< "-----------";
    }
    else
    {
        qDebug()<< "+++++++++++";
    }


    model = new QSqlQueryModel(this);
    model->setQuery("select * from user");
    model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID_Hiden"));
    model->setHeaderData(1, Qt::Horizontal, QObject::tr("姓名"));
    model->setHeaderData(2, Qt::Horizontal, QObject::tr("电话"));
    model->setHeaderData(3, Qt::Horizontal, QObject::tr("PW-Hiden"));
    model->setHeaderData(4, Qt::Horizontal, QObject::tr("家乡"));
    model->setHeaderData(5, Qt::Horizontal, QObject::tr("默认"));
    model->setHeaderData(6, Qt::Horizontal, QObject::tr("部门"));


    QTableView *tableView = new QTableView(this);
    tableView->setModel(model);
    //隐藏第0、3例
    tableView->setColumnHidden(0,true);
    tableView->setColumnHidden(3,true);

    //设置行头与列头的样式
    tableView->horizontalHeader()->setStyleSheet("QHeaderView::section {"
                                      "color: black;padding-left: 4px;border: 1px solid #6c6c6c;}");

    //表头填充一下,不然很难看
    tableView->horizontalHeader()->setStretchLastSection(true);
    tableView->resize(900,300);

//    QComboBox *dbComboProvince =new QComboBox(this);
//    dbComboProvince->move(1100,350);
    dbComboProvince->setModel(mode);

//    dataMapper= new QDataWidgetMapper();
//    //设置数据模型
//    dataMapper->setModel(model);
//    //数据的提交策略。
//    dataMapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);//
//    dataMapper->addMapping(dbComboProvince,4);
//    dataMapper->toFirst();//移动到首记录


    resize(1200,400);

    QPushButton *btn =new QPushButton("筛选->家乡",this);
    btn->move(600,350);
    connect(btn,&QPushButton::clicked,this,[this](){
        QSqlQuery query = model -> query();
        query.exec("select * from user where Home = '广东' ");
        model-> setQuery(query);
    });

    QPushButton *btn0 =new QPushButton("筛选->部门",this);
    btn0->move(800,350);
    connect(btn0,&QPushButton::clicked,this,[this](){
        QSqlQuery query = model -> query();
        query.exec("select * from user where Department = '采购部' ");
        model-> setQuery(query);
    });

    QPushButton *btn1 =new QPushButton("清空",this);
    btn1->move(300,350);
    connect(btn1,&QPushButton::clicked,this,[this](){
        //这个removeRows 要自己实现 
        int rowcount = model->rowCount();
        qDebug()<<"row count:"<<rowcount;
        qDebug()<<model->removeRows(0,rowcount);


		// 先这样实现
        QSqlQuery query = model -> query();
        query.exec("select * from user where Home = 'dd' ");
        model-> setQuery(query);
    });
}

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


在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值