常用类库:
显示:QLable QFrame QMessageBox
输入:QLineEdit
按钮:QPushButton QDialogButtonBox
事件处理:
void paintEvent(QPaintEvent*) // 绘图事件
void timerEvent(QTimerEvent*) // 定时器事件
mousePressEvent(QMouseEvent*) // 鼠标按下
mouseReleaseEvent(QMouseEvent*) // 鼠标抬起
mouseMoveEvent(QMouseEvent*) // 鼠标移动
其它:QDir QTime QVector(容器) QString …
十一、鼠标和键盘
1、鼠标事件处理
……
2、键盘事件处理
void keyPressEvent(QKeyEvent*); // 按下
void keyReleaseEvent(QKeyEvent*); // 抬起
int key() const // 获取按键代码
QString text() const // 获取按键文本
案例:按键测试
工程名:Keyboard
类名:KeyboardDialog
……
十二、数据库(sqlite)
1、数据库简介
1)概念
数据库指的是以一定方式存储在一起,能为多个用户共享、具有尽可能小的冗余度的特点,与应用程序彼此独立的数据集合;
2)数据库相关术语
DB - - - - - - - - - - - - 数据库(database)
DBMS - - - - - - - - – 数据库管理系统(DataBaseManageSystem)
DBA - - - - - - - - - - - 数据库管理员(DataBaseAdministartor)
RDB - - - - - - - - - - - 关系型数据库
RDBMS - - - - - - - – 关系型数据库管理系统
3)数据库分类(根据存储方式)
层次式数据库
网络式数据库
关系式数据库(普遍使用)
4)常见的数据库
商业数据库:
a. 甲骨文Oracle,市场占有率50%
b. IBM的DB2,市场占有率20%
c. 微软的SqlServer,市场占有率15%
非商业数据库:
a. Sun公司的Mysql,被Oracle收购;
b. SQLite数据库,轻量级的数据库;
2)Sqlite数据库
2.1 安装
1)离线安装
$ sudo dpkg -i libsqlite3-dev_3.7.9-2ubuntu1.2_amd64.deb
// 64位
2)在线安装
$ sudo apt-get install sqlite3
3)测试
$ splite3
// 查看sqlite版本信息并进入命令行操作界面
2.2 常用的命令
$ splite3 xx.db
// 操作指定的数据文件
注意:
在命令行界面可以输入两种指令,一种是sqlite3自身的指令,以"."
开始,输入".help"
可以看到这些指令的帮助文档;另一种是对数据的操作指令,比如创建数据表,或者对数据表的数据进行增删改查等操作,称为SQL语句,以";"
结束。
sqlite> .databases // 查看数据库的名字和文件路径
sqlite> .exit // 退回到终端
sqlite> .help // 查看帮助提示
sqlite> .header on // 显示数据标题栏
sqlite> .mode column/list // 设置显示模式
sqlite> .quit // 退回到终端
sqlite> .tables // 列出数据表名字
sqlite> .schema // 查看数据表创建语句(了解数据表详细信息)
eg:
sqlite> SELECT * FROM company;
//
3、在命令行使用SQL语句操作数据库
1)创建数据库
语法:
sqlite3 数据文件名.db // 创建数据文件并进入命令行操作界面
2)创建数据表
语法:
CREATE TABLE 表名(列名1 类型 [约束], 列名2 类型 [约束], 列名3 类型 [约束]);
类型:
INT(整型数)、TEXT(文本字符串)、REAL(浮点数)
约束:
PRIMARY KEY - - - - - - - 主键约束,表示该列的数据唯一,并且可以加快数据的访问;
NOT NULL - - - - - - - - – 非空约束,表示该列的数据不能为空;
3)删除数据表
语法:
DROP TABLE 表名;
注意:数据表一旦删除里面的数据也将消失;
4)插入数据
语法:
INSERT INTO 表名 (列名1, 列名2,..) VALUES (数值1,数值2,..);
5)删除数据
语法:
DELETE FROM 表名 WHERE 条件表达式;
eg:sqlite> DELETE FROM company WHERE salary<1000 or salary>8000;
6)修改数据
语法:
UPDATE 表名 SET 列名1=数值1, 列名2=数值2.. WHERE 条件表达式
7)查询数据
语法:
SELECT 列名1, 列名2... FROM company;
SELECT 列名1, 列名2... FROM company WHERE 条件表达式 ORDER BY 列名 排序方式;
注意:排序方式ASC(升序)、DESC(降序)
练习:
创建一个menu.db的数据库文件,打开后建立学生成绩数据表,列的字段依次为学号(ID)、姓名(Name)和成绩(Score)
4、在QT中使用Sqlite数据库
1)建立qt程序和数据库的连接:QSqlDatabase
// 添加数据库驱动
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
// 设置数据库名字,对于sqlite就是数据文件名字xx.db
db.setDatabaseName("menu.db");
// 打开数据库
db.open();
2)执行SQL语句:QSqlQuery
QSqlQuery query;
query.exec("sql语句字符串");
3)执行查询SQL语句,遍历结果集:QSqlQueryModel
eg:
QSqlQueryModel model;
// 执行查询语句,并将结果集保存到model中
model.setQuery("SELECT语句");
// 显示结果集到界面
QTableView* view = new QTableView;
view->setModel(&model);
案例:学生成绩管理系统
工程名:Sqlite
类名:SqliteDialog