一、QT安装
1.sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
2.Sudo apt-get install qtcreator
3.安装不了解决方法:方案一:sudo apt-get update
方案二:将qt4改为qt5
方案三:下载QT离线安装包:qt-creator-linux-x86-opensource-2.8.0.run
二、认识QT
功 能:做图形开发
命 名:
Q - QT库中的类都是以Q开头的
T - toolkit 工具箱
学 习:
关注工具如何使用,不要关注工具是如何实现的
历 史:
1991 奇趣公司
QT 1.0 ~ 2.0 桌面软件
2008 诺基亚公司
QT 3.0 ~ 4.8 加入模拟器
2012 Digia
QT 5.0
由于开发维护团队,市场目标等因素的不同,导至QT车呢供需在不同的版本环境下可能无法运行
关键词:跨平台 C++ 图形界面库
QT跨平台:
程序运行在不同的操作系统下
实 现:一处编码,到处编译
java程序的跨平台:
一处编译,处处运行
必须安装不同平台的java虚拟机
java 运用程序 -> java虚拟机 -> 系统
qt 运用程序 -> 系统
三、GUI API(系统接口:本质是函数)
GUI:图形用户界面
C++ MFC 代表性质的图形库
QT 嵌入式、手机APP
C#(C SHARP) WP (手机)
java Android 手机APP
oc/swift IOS 手机APP、MFC桌面程序
C/C++底层
四、QT的基础界面
QMainWindow - 主窗口
特征:带菜单栏、工作栏、状态栏
QWidget - 组件窗口
特征: 带有特定功能界面元素
QDialog - 对话窗口
特点: 带有显示或输入界面元素以及按钮
QT Creator 介绍
八种工作模式:
欢迎 - 创建或打开项目、
编辑 - 编辑代码
设计 - 编辑界面
帮助 - 帮助文档
快捷按钮
绿三角 编辑 + 运行
绿三角 + 虫子 调试
锤子 编译
编辑模式:
项目栏 代码编辑区
操作结果显示区
QT项目文件的组成结构
.pro 项目文件
描述项目文件和模块的组成
可以通过.pro文件打开一个已存在的文件
.ui 界面文件
点击该文件进入界面设计模式
设计模式: 控件 - 界面元素
界面设计区 对象和类
控件栏
信号处理区 属性面板
信号处理区: 处理组件信号的
点击按钮,会产生一个点击信号
对象和类 : 编辑组件对象的名称
并能够直到该组件的类型
属性面板 : 编辑属性组件值
属性:大小/文本/颜色/样式
QT组件的分类与学习
Layout 布局组件:设置组件位置
spacers 建个组件:设置组件间距
buttons 按钮组件:各种按钮
input 输入组件:提供用户输入数据
display 输出组件:显示文本/图片等
QT GUI项目开发的基本流程
项目名称: SQQ (防QQ登录界面)
1.设计界面
2.信号与槽的处理
信号与槽
信号:用户对控件的操作
例如:点击、双击、右击等
槽:专门用于信号处理的函数
1.界面设计
2.信号与槽的处理
2-1 改变要编辑代码组件的对象名
2-2
信号与槽的关联方式:
(1)信号与槽编辑器
(2)右击组件,点击“转到槽”菜单
(3)connect()
(1)信号与槽编辑器运用于QT库中定义的信号和槽
举例:点击退出按钮,窗口关闭
点击信号:clicked()
关闭槽函数:close()
信号和槽关联的4个元素:
信号发送者 信号类型
信号接收者 处理信号的槽函数
(2)转到槽运用于用户自定义处理函数
举例:点击Login
错误调试:
(1)qDebug() <<"xxx";
#include <QtGlobal>
#include <QDebug>
(2)QMessageBox 消息框
#include<QT>
ctr +TAB
sz开头是字符串
qDebug函数的头文件:#include<QtGlobal> #include<QDebug>
QString szName = ui->userline->text();//定义一个QString类的对象szName 界面指针ui指向userline按钮用text()函数获得按钮上的文本并复制给szName
Comb BOX类函数currentText()获得当前选中文本的文本内容
QList<QAbstractButton *> buttons () const
返回一个容器
QFile file("out.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QTextStream out(&file);
out << "The magic number is: " << 49 << "\n";
Table View +数据模型 -> 显示数据
Table Widget(自动创建/包含数据模型)
分离QString
将分离的道德数据放置到Model中
m_pmodel->setItem(i,0,list.at(0));//第i个学生第0
行第0列
MVC
main.cpp
VIEW
student.cpp
recordDLg.cpp
queryDlg.cpp
updateGlg.cpp
Ctroller :垃圾过滤/功能实现
Core.cpp
Model : 数据操作 : 容器 + 文件
data.cpp QList / QFile
reject();
============================day04==============
1.事件的意义
用户对控件的操作
2.事件的本质
在QT类库中以虚函数形式的存在
3.常用事件
鼠标 按键 定时器
4.如何自定义处理用户的操作
重写父类事件函数
5.了解事件的重要性
QT很多动作都是通过事件处理的
以关闭窗口为列:
close() -> closeEvent() -> 底层模块 - 默认直接关闭窗口
6.QT类的构架
QOBject
|
------QWidget
|
QLineEdit
QAbractButton
|
QPushButton
QReadButton
可视化的事件定义
设置可显示中文字符(如果有中文乱码时可加以下代码):需要加在显示窗口之前,在主函数里加
头文件#include <QTextCodec>
QTextCodec *codec = QTextCodec::codecForName("utf8"); //GB2312
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
深入信号和槽机制
static void QObject::connect();
只有继承了QObject类才能使用信号与槽机制
信号和槽的本质:成员函数
信号函数的特点:
1.只有声明没有实现
2.可以带形参 ---用于数据传递
3.返回值必须是void
4.信号的声明形式
sigals:
void xxx(int i)
5.信号的发射:
emit xxx(10);
信号发射时带的数据会被对应(它关联的)的槽函数接收(也可以不接受)
槽函数的特点:
1.具备普通函数的性质
2.可以当普通函数在其他函数中调用
3.通过形参列表可以接收信号传递的数据
4.槽函数的声明:
访问权限 slots:
int slotfun( int );
connect()
1.可以使用自定义的信号和槽
2.信号和槽的关联关系
1:1 1:n n:1
3.信号可以转发
connect(send,SINGAL(),
recv,SIGNAL());
4.信号和槽的移除
disconnect()
信号和槽的使用注意事项;
信号发送的数据
槽可以接收也可以不接收,但不能多收!!!
signal(int) slotz(int,int) //error
singal(int) slot(QString) //error
signal(int) slot() //ok
使用原则:多发少收
================day05===========
打地鼠游戏搭建实现流程:
打地鼠游戏实现流程:
time : 10~15 min
1.添加图形框架类
2.添加图片资源
3.添加组件
4.改变组件名称
time : 10min
1.组建框架
2.显示图员
3.配置鼠标样式
time : 15min
1.获得9个坑的位置
2.设置定时器让地鼠每隔一段时间随机出现
time : 30min
1.处理鼠标的击打动作
2.击中地鼠的处理
2-1.击中图片切换
2-2.击中得分(信号转发)
3.倒计时
4.重新游戏
5-1 3个定时器stop
5-2 score = 0 time = 60
5-3 3个定时器start
5.退出游戏 - 给退出提示
---------------------------
游戏升级方案:
关卡 与 分析设置
Up Level = Level * 50 + 200;
升级表现:地鼠出现的间隔时间减少
time = 1200 - Level*100;
Level = 10 游戏结束