使用Qt5开发桌面程序 | 您所在的位置:网站首页 › qt开发桌面软件好不好 › 使用Qt5开发桌面程序 |
Qt开发信息管理客户端
一.Qt的简介二.Qt中的重要概念1.信号与槽机制信号(signal)槽(slot)2.Lambda表达式
三.使用Qt设计师快速开发1. 环境搭建(1)连接Mysql数据库
2.设计你的窗口(1)添加4个选项卡来切换信息的显示(2)为图书选项卡添加TableView控件和一些功能按钮(3)添加布局(4)将数据库的表与QSqlTableModel绑定,再将QSqlTableModel放在TableView(控件)中显示(5)为按钮添加事件监听器
3.美化窗口控件4.使用QCharts绘制图表实现数据可视化
一.Qt的简介
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。基本上,Qt 同 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。 使用Qt有哪些优点: 优良的跨平台性 一次编写,处处运行面向对象 模块化的设计丰富的 API 良好的开发文档使用Qt开发的著名程序有: Google EarthOpera(浏览器)VirtualBox(创建虚拟机)wps Office(著名办公软件) 二.Qt中的重要概念 1.信号与槽机制用Java做过桌面程序的伙伴都知道,我们需要为按钮、文本输入框、窗体等各种组件添加事件监听器(鼠标监听器、键盘监听器)来与用户产生交互。在Qt中,信号与槽函数就负责交互任务。 信号(signal)作用:发出一个信号,可被所有对象监听,该信号是没有目的的,就像校园里的广播一样,所有人都会听到。在Qt中,这也称为信号的广播机制,如果有对象对这个信号感兴趣,那么它可以使用connect函数来连接此信号,将这个信号(signal)与自己的一个槽(slot)绑定来进行处理。 槽(slot)作用:接收到信号后要如何处理(进行什么动作),其本质是类的一个成员函数,和C++成员函数几乎无区别。可以为任意类型:public、protected、private,唯一区别在于:槽函数可以绑定信号,每当与槽函数绑定的信号被发射时,该槽函数将被触发调用。 connect()函数最常用的一般形式: connect(sender, &Send::signal, receiver, &Receiver::slot)可以解释为: sender:发送者 signal:信号 receiver:接收者 slot:动作 举个例子,在Qt4中: connect(button, SIGNAL(clicked()), &a, SLOT(quit()));现在有一个名为button的按钮,一个名为a的窗口,connect函数将按钮的点击信号绑定在a的一个槽函数,那么当按钮button被点击后,a执行quit操作。 2.Lambda表达式在Qt5中,可以使用Lambda表达式来定义并创建匿名的函数对象,不过这是C++11引入的新特性,如果要使用Lambda表达式,必须在.pro文件中写入 CONFIG += c++11 connect(button, &QPushButton::clicked, // = :把外部所有局部变量、类中所有成员以值传递方式 // this: 类中所有成员以值传递方式 // & : 把外部所有局部变量, 引用符号 [=]() { qDebug() Qt Widget Application->项目名称->mainWindow->勾选创建界面![]() ![]() 编写连接数据库的代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //连接数据库 QSqlDatabase db= QSqlDatabase::addDatabase("QMYSQL"); //设置数据库 db.setHostName("127.0.0.1"); db.setPort(3306); db.setDatabaseName("book"); db.setUserName("root"); db.setPassword("123456"); //打开时数据库 if(!db.open() ) { qDebug()tableView_book->setModel(bookModel);// 将bookModel放在tableView_book中 //设置表头 bookModel->setHeaderData(0,Qt::Horizontal,"图书编号"); bookModel->setHeaderData(1,Qt::Horizontal,"书名"); bookModel->setHeaderData(2,Qt::Horizontal,"作者"); bookModel->setHeaderData(3,Qt::Horizontal,"版次"); bookModel->setHeaderData(4,Qt::Horizontal,"单价(元)"); bookModel->setHeaderData(5,Qt::Horizontal,"出版社"); bookModel->setHeaderData(6,Qt::Horizontal,"所属类别"); //设置model的编辑策略 为 手动提交修改 bookModel->setEditStrategy(QSqlTableModel::OnManualSubmit); (5)为按钮添加事件监听器1.为添加按钮添加槽 右击添加按钮->转到槽->clicked(),鼠标单击时,按钮发出signal,由槽函数接受处理 无论是添加还是删除,点击确定后才会去执行sql语句,即提交事务 2.为删除按钮添加槽 右击删除按钮->转到槽->clicked(),处理代码如下 void MainWindow::on_pushButton_2_clicked() { //获取选中的模型 QItemSelectionModel *smodel=ui->tableView_book->selectionModel(); //获取模型中的索引 QModelIndexList list=smodel->selectedRows(); //删除所有选中的行 for(int i=0;iremoveRow(list.at(i).row()); } }
5.为取消按钮添加槽 void MainWindow::on_pushButton_4_clicked() { //取消完再提交一次 bookModel->revertAll(); bookModel->submitAll(); }6.为查找按钮添加槽 此处设置了两个查询条件 6.为显示所有按钮添加槽 void MainWindow::on_pushButton_5_clicked() { bookModel->setTable("book");//重新关联表 bookModel->select();//再次显示所有数据 } 3.美化窗口控件 为选项卡设置图标 修改字体大小,选择font->14![]() ![]() ![]()
效果 官方推出QCharts后,Qt画图再也不用需要配置第三方的qcustomplot和qwt插件了,QCharts功能比两者都好,且易用安装和使用。 使用QCharts绘图,你必须在安装Qt时勾选QCharts模块(默认不勾选),否则不能使用QCharts. 此处以柱状图为例演示官方示例的使用: Qt欢迎页->示例->输入barmodelmapper 3.修改main函数,看是否成功运行 向main函数中添加头文件“tablewidget.h”,并生成一个实例,运行该实例: #include "mainwindow.h" #include #include"tablewidget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); // MainWindow w; // w.show(); TableWidget t; t.show(); return a.exec(); }效果如下: TableWidget.cpp代码修改如下: #include "tablewidget.h" #include #include #include #include #include #include #include #include #include #include #include #include #include QT_CHARTS_USE_NAMESPACE TableWidget::TableWidget(QWidget *parent) : QWidget(parent) { qDebug() |
CopyRight 2018-2019 实验室设备网 版权所有 |