qt学习笔记
Part 1基本思路
学习目标:
(熟练)使用 qt 制作符合要求的 ui
FAQ:
1)学习Qt5还是Qt4?
重要的是学习的方法而不是内容,掌握了正确的学习方法就可以很快完成另一者的学习,综合来看,Qt4的资料较为全面,入门起来应该比较快。
达成方式:
学会使用 assistant 找到合适的 class 和 子函数 即可
:先决条件:知道都有什么可用的 class 和 对应的子函数
练习方式:实战(教材结合assistant)
以熟悉 class 和 子函数 为主
达标要求:
完成 基础 部分
中级 部分完成一半
基本构建思路:
1、使用 designer 完成基本界面的绘制
2、添加继承类完成信号和槽的连接
需要掌握的:
1、添加中间层的一般方法
2、常用的信号和槽
Part 2 具体方法
1、文件的划分
1)一般对于一个功能使用两个文件,头文件存放声明,实现文件存放实现
2)main 函数单独放一个文件
2、没有什么功能是添加一个中间层解决不了的,如果有就再添加一个
3、头文件的写法
0)头文件本质上是充当了与外界接口的作用,其中想让外界访问(接入)的函数/变量使用 public, 否则使用 protected 和 private
0.5)构造函数一般是public的, 同时默认 QWidget *parent = 0
1)首先使用 #ifndef 来避免重复调用,后边的名字为头文件名(全大写,点号变为下划线)
2)包含头文件时尽量不包含集成头文件,避免程序的运行变得臃肿
3) 当使用系统自带的基本类框架时,一般声明一个自己的类,让他继承自该框架类
4)在头文件中进行自建类的定义时也不对其成员进行定义,而是只声明
5)为了能够对自建类进行调用,首先必须包含的就是构造函数(不定义,只声明)
6)其次是这个类需要用的的信号和槽
7)最后是涉及到的函数和变量
4、实现文件的写法
0)实现文件的主要功能是完善头文件中所提出的功能,因此第一件事就是完善头文件中未定义的自建类
1)在出现显示字符串的位置加上 tr() 以提供翻译功能
2)在出现文本的地方使用 “&+字母” 来设置该部件的快捷键
3)标签本身不提供功能,但可以为其他没有文字的部件设置快捷键(需要使用“设置伙伴”功能)
4)要想使用其他cpp文件提供的功能,必须包含与之对应的头文件
5、designer的用法
0)用designer生成的是一个头文件,需要写出对应的接口(一套头文件和实现文件)以丰富其功能并接入其他文件中去
1)创建的常见顺序:
1)创建子窗口部件
2) 布局
3)设置Tab键顺序
4)连接信号与槽
5)实现自定义槽
2)要注意修改部件的名称以方便随后加入自定义槽(可以只修改后续要调用的)
6、主窗口的创建
1)主窗口与对话框的不同:
1)声明和定义构造函数时不传入父窗口(因为是主窗口了, 肯定没有父窗口)
2)mainwindow.h的结构:
1)public: 构造函数
2)protected: closeEvent()
3)private:
1)slots:要实现的功能
2)普通函数:生成窗口过程中要用到的函数
3)字段:mainwindow中用到的变量
3)mainwindow.cpp
1)类定义
1)设置主窗口
2)创建动作
3)创建菜单
4)创建上下文菜单
5)创建工具栏
6)创建状态栏
7)设置图标
8)其他功能
4)使用图片
要使用图片需要创建对应的资源文件(.qrc),并在工程文件(.pro)中加上一行 : RESOURCES = ****.qrc
5)使用内置的提示框
int r = QMessageBox::type(parent, title, message, buttons)
//type 可选 warning, information, question, critical, 决定了弹出对话框的图案
//parent 为父窗口
//tile, message 分别为标题和显示的信息
//buttons 为窗口中提供的默认按钮, 有 QMessage::Yes, QMessage::No, QMessage::Cancel ......
// 显示多个按钮用 | 分割
6)使用内置的文件对话框
QString filename = QFileDialog::getOpenFileName(parent, title, folder, filter);
//parent 为父窗口
//title 为标题
//folder 为开始寻找的目录
//filter 为文件过滤器,格式为 “说明 + (通配符)”, 如有多个则用\n分割
//例如: "Spreadsheet files (*.sp) \n Comma-separated values files (*.csv)"
7)去除文件名中的路径:
QString name = QFileInfo(fullFileName).fileName();
8) 对话框的调用
1)非模态(可以挂在后台的)
dailog = new myDialog(this); //实例化
connect(......); //建立连接
dialog->show(); //显示窗口
dialog->raise(); //挂在顶层
dialog->activateWindow(); //激活窗口
2)模态(用完后就关闭,并且不允许切换至同应用的其他窗口)
myDialog dialog(this); //实例化
if(dialog.exec()){ //运行(显示窗口)
connect(......); //建立连接
}
delete dialog; //释放内存
qt学习笔记的更多相关文章
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- Qt学习笔记-Widget布局管理
Qt学习笔记4-Widget布局管理 以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...
- QT学习笔记(一)——Helloworld
QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...
- qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)
笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...
- Qt学习笔记(2)-利用StackWidget实现选项卡式页面
学习笔记第二篇,利用Qt实现选项卡式的页面,效果如图1.1-图1.3所示.程序实现的功能是通过点击状态栏实现不同页面的切换,实际上Qt中自带有Tab选项卡式的控件,本文利用StackWidge实现类似 ...
- Qt学习笔记(1) hello world
Qt的简介: Qt是一个跨平台的C++ GUI库实现,原本只是以为它只提供一些图形接口,看来我还是低估了它,采用文档Qt学习之路2开始学习,不知道这个文档是不是有点老了,管他呢,先了解下. 搭建环境: ...
- 【Qt学习笔记】Qt+VS2010的配置
http://blog.csdn.net/jocyln9026/article/details/8575218 关于Qt Qt是1991年由Trolltech公司开发的一个跨平台的C++图形用户界面应 ...
- QT学习笔记1
不准备用MFC了,想切换到QT.所以跟着网上的一个笔记学习. 1 开发环境是VS2008+QT4.7+VassistX 具体如何配置看这个帖子:http://qimo601.iteye.com/blo ...
- QT学习笔记(一)——ui的认识
////////////2015/08/06/////////////////// ///////////by xbw////////////////////////// //////////环境 Q ...
- 【Qt学习笔记】窗口部件整理
关于Qt中窗口部件的学习 今天开始学习Qt的窗口部件,领略一下Qt的神奇之处,记得2012年的那年冬天,我还学Java呢,现在基本上和Java说再见了,不过对于嵌入式的开发Qt还是举足轻重的,我想趁着 ...
随机推荐
- Kafka如何保证消息的可靠性传输
1.消费端弄丢了数据 唯一可能导致消费者弄丢数据的情况,就是说,你消费到了这个消息,然后消费者那边自动提交了 offset,让 Kafka 以为你已经消费好了这个消息,但其实你才刚准备处理这个消息,你 ...
- 【BZOJ4002】[JLOI2015]有意义的字符串(数论,矩阵快速幂)
[BZOJ4002][JLOI2015]有意义的字符串(数论,矩阵快速幂) 题面 BZOJ 洛谷 题解 发现我这种题总是做不动... 令\(A=\frac{b+\sqrt d}{2},B=\frac{ ...
- Redis主从配置和哨兵监控配置——服务器端环境搭建
一:介绍 公司用到的redis框架,主要分为cluster的缓存集群和sentinel中的哨兵主从.这种的选用方式一般需要更具业务场景来做区分,两种框架的配置图为:右图为哨兵主从框架和cliuster ...
- java容器-Map
Map:基本思想是映射表(维护键-值对),HashMap,TreeMap,LinkedHashMap,ConcurrentHashMap等都是基于Map接口实现的map容器,他们特性不同,表现在效率, ...
- CentOS 7 安装docker (图文)
一定要用root账号登录系统,打开终端/或远程工具(如xshell)登录系统 检查是否已经安装命令 rpm –qa|grep docker 出现如上说明已安装 也可用命令docker -v (如 ...
- DirectX11 With Windows SDK--25 法线贴图
前言 在很早之前的纹理映射中,纹理存放的元素是像素的颜色,通过纹理坐标映射到目标像素以获取其颜色.但是我们的法向量依然只是定义在顶点上,对于三角形面内一点的法向量,也只是通过比较简单的插值法计算出相应 ...
- Redis非关系型数据库
1.简介 Redis是一个基于内存的Key-Value非关系型数据库,由C语言进行编写. Redis一般作为分布式缓存框架.分布式下的SESSION分离.分布式锁的实现等等. Redis速度快的原因: ...
- Github 开源项目(一)websocketd (实战:实时监控服务器内存信息)
websocketd 是WebSocket守护进程,它负责处理WebSocket连接,启动您的程序来处理WebSockets,并在程序和Web浏览器之间传递消息. 安装:websocketd wget ...
- weblogic找不到数据源
查看weblogic日志 报错是每个数据源都找不到. 查看oracle用户状态 select username,account_status,lock_date from dba_users; 解 ...
- java 代码
java 里的 pandas tablesaw DataFrame 再有就是 spark 了 java 代码规范 Java8特性详解 lambda表达式 Stream Sonar 规则检测 sprin ...