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学习笔记的更多相关文章

  1. qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

    应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...

  2. Qt学习笔记-Widget布局管理

    Qt学习笔记4-Widget布局管理       以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...

  3. QT学习笔记(一)——Helloworld

    QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...

  4. qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)

    笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...

  5. Qt学习笔记(2)-利用StackWidget实现选项卡式页面

    学习笔记第二篇,利用Qt实现选项卡式的页面,效果如图1.1-图1.3所示.程序实现的功能是通过点击状态栏实现不同页面的切换,实际上Qt中自带有Tab选项卡式的控件,本文利用StackWidge实现类似 ...

  6. Qt学习笔记(1) hello world

    Qt的简介: Qt是一个跨平台的C++ GUI库实现,原本只是以为它只提供一些图形接口,看来我还是低估了它,采用文档Qt学习之路2开始学习,不知道这个文档是不是有点老了,管他呢,先了解下. 搭建环境: ...

  7. 【Qt学习笔记】Qt+VS2010的配置

    http://blog.csdn.net/jocyln9026/article/details/8575218 关于Qt Qt是1991年由Trolltech公司开发的一个跨平台的C++图形用户界面应 ...

  8. QT学习笔记1

    不准备用MFC了,想切换到QT.所以跟着网上的一个笔记学习. 1 开发环境是VS2008+QT4.7+VassistX 具体如何配置看这个帖子:http://qimo601.iteye.com/blo ...

  9. QT学习笔记(一)——ui的认识

    ////////////2015/08/06/////////////////// ///////////by xbw////////////////////////// //////////环境 Q ...

  10. 【Qt学习笔记】窗口部件整理

    关于Qt中窗口部件的学习 今天开始学习Qt的窗口部件,领略一下Qt的神奇之处,记得2012年的那年冬天,我还学Java呢,现在基本上和Java说再见了,不过对于嵌入式的开发Qt还是举足轻重的,我想趁着 ...

随机推荐

  1. React Native & react-native-web-player & React Native for Web

    React Native & react-native-web-player & React Native for Web https://github.com/dabbott/rea ...

  2. 多线程的休息室WaitSet详细介绍

    1. 所有对象都会有一个wait set,用于存放调用了该对象wait方法之后进入block状态的线程; 2. 线程被notify之后,不一定会立即执行; 3. 线程从wait set中唤醒的顺序不一 ...

  3. Java 获取当前线程、进程、服务器ip

    /** * 获取当前线程id */ private Long getThreadId() { try { return Thread.currentThread().getId(); } catch ...

  4. MT【332】椭圆正交变换

    (2018河南数学联赛解答10) 已知方程$17x^2-16xy+4y^2-34x+16y+13=0$表示椭圆,求它的对称中心和对称轴. 解:设对称中心为$(a,b)$,显然$A(1,1),B(1,- ...

  5. 用video标签流式加载

    video标签 浏览器的video标签通常是接收一个src属性,然后浏览器就会根据这个src属性来自动加载视频.这个过程是浏览器来加载video的. 这种方式有什么问题吗? mp4文件不能流式加载 w ...

  6. Linux keepalived+nginx实现主从模式

    双机高可用方法目前分为两种: 主从模式:一台主服务器和一台从服务器,当配置了虚拟vip的主服务器发送故障时,从服务器将自动接管虚拟ip,服务将不会中断.但主服务器不出现故障的时候,从服务器永远处于浪费 ...

  7. 使用diff或者vimdiff比较远程文件(夹)与本地文件夹

    方法1:管道给diff $ssh eric@192.168.1.11 "cat ~/remote_file.txt" | diff - ~/local_file.txt 如果 Fi ...

  8. Redis的两种持久化方式详细介绍

    一,Redis是一款基于内存的数据库,可以持久化,在企业中常用于缓存,相信大家都比较熟悉Redis了,下面主要分享下关于Redis持久化的两种模式 1.半持久化模式(RDB,filesnapshott ...

  9. HFSS在进行仿真时端口与激励设置细则

    最近发现在使用HFSS仿真天线时候在设置端口激励求解的时候,由于端口激励面积的大小和放置方式的不通最终的求解结果也有很多不同 在进行CPW结构的天线仿真中分别尝试了waveport 和lumpedpo ...

  10. Django 中使用ImgFiled 和FileFiled

    1.使用ImgFiled class ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, * ...