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还是举足轻重的,我想趁着 ...
随机推荐
- [ffmpeg] h264并行解码
ffmpeg中的并行解码分为两种: Frame-level Parallelism Slice-level Parallelism Frame-level Parallelism 帧间依赖 我们之前讨 ...
- Codeforces Round #520 (Div. 2) B. Math 唯一分解定理+贪心
题意:给出一个x 可以做两种操作 ①sqrt(x) 注意必须是完全平方数 ② x*=k (k为任意数) 问能达到的最小的x是多少 思路: 由题意以及 操作 应该联想到唯一分解定理 经过 ...
- 01Design and Analysis Algorithm Using Python-程振波
1.(p14)比较两个数的大小 a = int(input('num:')) b = int(input('num:')) def getMax(a,b): if a>b : print('Th ...
- 一文入门C3
2.CSS3 官方文档:http://www.w3school.com.cn/cssref/index.asp 2.1.CSS基础 基础简单过下,事先说明下:诸如引入.注释.案例就不一一演示了,有个工 ...
- Arrays和String单元测试(课下作业,选做)
在IDEA中以TDD的方式对String类和Arrays类进行学习- 测试相关方法的正常,错误和边界情况 - String类 - charAt - split - Arrays类 - sort - b ...
- xml转换为json格式时,如何将指定节点转换成数组 Json.NET
使用Json.NET转换xml成json时,如果xml只有单个节点,但json要求是数组形式[], JsonConvert.SerializeXmlNode 并不能自动识别 示例如下: RecordA ...
- App测试的策略
(一).App测试的策略 1.App测试需要考虑的方面 设备多样性 操作系统.浏览器.应用程序运行时环境.屏幕分辨率.人机交互界面和接口.人体工程学设计.屏幕尺寸等 运营商网络 ...
- DirectX11--实现一个3D魔方(3)
前言 (2019/1/9 09:23)上一章我们主要讲述了魔方的旋转,这个旋转真是有毒啊,搞完这个部分搭键鼠操作不到半天应该就可以搭完了吧... (2019/1/9 21:25)啊,真香 有人发这张图 ...
- redis---------AOF文件异常导致的redis无法载入
AOF损坏时的对策1.若在写AOF文件时Server崩溃则可能导致AOF文件损坏而不能被Redis载入.可通过如下步骤修复: 创建一个AOF文件的备份: cp appendonly.aof appen ...
- Centos7添加新源
yum repolist # 查看yum源列表yum localinstall http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epe ...