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还是举足轻重的,我想趁着 ...
随机推荐
- DAY19、日常模块
一.hashlib模块:加密1.基本使用:import hashlibcipher = hashlib.md5('需要加密的数据(二进制形式)'.encode('utf-8'))print(ciphe ...
- ShoppingCart
数据库设计 表结构 [dbo].[AdminInfo] AdminID, AdminName, AdminPassword, RoleID [dbo].[BK_Car] ID, CarID, ISBN ...
- PAT 甲级真题题解(1-62)
准备每天刷两题PAT真题.(一句话题解) 1001 A+B Format 模拟输出,注意格式 #include <cstdio> #include <cstring> #in ...
- [USACO19FEB]Mowing Mischief
题目大意: 给定平面上的一些点,求这些点的一个\(LIS\),并且还需要满足下列式子最小: \[ \sum_{i=1}^{n-1}(a[i+1].x-a[i].x)*(a[i+1].y-a[i].y) ...
- VS2010查看源码对应的汇编语言
在学习c++中const关键字的过程中,经常会看到各种寄存器.汇编指令分析,像下面的图这样 左图是g++中反汇编的效果,右图是vs中反汇编的效果. 如果我们想要查看源码所对应的汇编语言,应该怎么操作呢 ...
- JSP、HTML页面概述
1. 展示 <%-- 此页面为jsp页面 --%> <!-- <%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译 --> <%-- ...
- mysql You can't specify target table 'xxx' for update in FROM clause的解决
DELETE from sp_goodscontent where goodsId in (SELECT t.goodsId from ( SELECT goodsId FROM sp_goodsco ...
- 001 UI介绍
UI全称:User Interface,即用户界面 UI的职责:负责人机之间的交互,它需要将关键信息,操作逻辑等展示给用户 UI在游戏中承担的职责: 1.游戏美术风格的重要组成部分 2.承担着重要的美 ...
- Oracle ORA-08104报错处理方法及注意事项
[环境介绍] 系统环境:IBM P740 8205-E6C (AIX) + 11.2.0.3.0 Oracle RAC [背景介绍] 故障描述:数据库表空间超过90%,无法进行扩容表空间,需要业务侧清 ...
- R语言数据集的技术
特征值选择技术要点 特征值选择技术要点(特征值分解) 作者:王立敏 文章来源:xiahouzuoxin 一.特征值分解 1.特征值分解 线性代数中,特征分解(Eigendecomposition),又 ...