Qt学习笔记(2) |
您所在的位置:网站首页 › 点击按钮关闭窗口的快捷键是什么 › Qt学习笔记(2) |
目录 〇 Qt工程文件及内容 ○ 关于main函数的讲解 ○ 项目管理文件(.pro文件) ○ .cpp文件 ○ 项目界面文件 ○ 命名规范和编译器的快捷键 〇 在界面中添加按钮 ○ 创建工程 〇 对象树 〇 Qt窗口坐标系 〇 信号和槽(重点) ○ 用一个点击按钮关闭窗口的例子说明 ○ 自定义信号和槽 〇 信号和槽函数的重载 〇 信号连接信号以及信号的断开 〇 lambda表达式(并不懂。。什么时候用到再说) 〇 信号和槽总结 ❤ 2020.8.14 ❤ 〇 Qt工程文件及内容新建一个工程后,文件如图所以 这是来自传智播客的视频,建立一个基类为Qwidget,不创建界面的工程,其主函数默认内容如图所以 关于创建qt程序的总结 ○ 项目管理文件(.pro文件) .pro文件中不要添加一些没用的东西,注释都不要 模板类型 ○ 头文件 ♣ 头文件开头的是防止重复加载的,在新版编译器中部分功能可以用#program once代替,但是两者有一些不同,具体可以参考:#ifndef 与 #program once 的区别 ○ .cpp文件就是源文件。 ♣ 关于初始化列表,我在学习C++的时候没有印象。。。见这里吧:c++中的初始化列表详解 ○ 项目界面文件双击.ui文件会打开一个设计器,这个designer是Qt Creator里面的,和Qt自带的Qt Designer不一样。、 编译后在项目目录下会生成四个文件 具体的介绍见这里:Qt项目界面文件(.ui)及其作用(超详细) ○ 命名规范和编译器的快捷键
❤ 2020.8.21 ❤ 〇 在界面中添加按钮在Qt助手中搜索PushBotton 文档中给出了一些该类的信息,比如需要的头文件,所属模块,父类、子类等等。 创建一个没有界面的工程 得到一个工程 将如下代码敲入按钮的构造函数中,并将QPushButton头文件include到源代码文件中 ♣ 如果直接用show,而不是指定父类(依赖),那么按钮会默认新建一个窗口显示。 ♣ 如果用resize不用setfixedsize那么窗口大小是可以调节的 代码如下 编译运行 非常夸张 〇 对象树 对象的构造顺序是从父对象到子对象,析构顺序是从子对象到父对象 在调试过程中可以include一个头文件,然后在函数中加入qdebug()函数,来显示程序运行中的标记 类似于这样,就可以在构造或析构过程中显示对应字符。 对象树简单来说就是这样 〇 信号和槽(重点) 简单来说,信号就是一个动作,槽就是一个相应函数(我的理解),两者之间用connect函数连接。 关于一个类的信号可以在帮助文档里搜到,如果没有那就搜他的父类,比如QPushButton的父类QAbstractButton的信号 槽也是同理 ○ 用一个点击按钮关闭窗口的例子说明首先我建立一个里面有一个按钮的工程 长这样 然后如图所示加入connect语句 这样 ♣ 新版本的c++中,函数名就是函数的地址,所以可以不加前面的&,但是在早期的C++中必须加&,所以为了直观还是加上比较好 OK 试验成功 首先新建一个工程(空窗口widget类),新建完成之后先运行一下看看能不能运行(一开始我也觉得没必要,可是。。。)。 ♣ 类名不可以叫main。。。别问我怎么知道的。。。 添加新文件,在项目名字上面右键 选择C++class 在选择父类的时候,如果不是一个控件,那么可以选择QObject 创建一个hello,一个world 这个是hello的头文件默认内容,自定义信号写在signals下 填写规则 信号 槽 在hello的头文件中添加CallWorld信号函数声明 在world的头文件中添加ReceiveHello槽函数声明 在源文件中加入实现,include一个QDebug,就可以在函数中加入qDebug指令输出字符。 在最开始的头文件中include两个类的头文件,并声明两个对应的对象(只声明) 然后对对象进行初始化 并connect 声明一个触发helloworld的方法 并且定义 ♣ emit是一个发射信号指令,我也不太清楚加不加emit有什么区别。。。
然后把这个函数加入practice中进行调用 然后保存调试 OK,成功出现helloworld
❤ 2020.8.30 ❤ 〇 信号和槽函数的重载在hello的信号中增加一个重载函数,里面包含了心情变量 同时在world的槽函数中加入重载函数声明和定义 将信号发射函数修改 这时候,如果直接编译会报错 因为connect函数没发分辨到底用了哪个重载函数,这是需要使用函数指针 ♣ 我已经不记得什么是函数指针了。。。。 用新的代码代替以前的 ♣ 在声明一个成员函数的函数地址的时候,需要把该函数的作用域加在指针的前面 ? 可是为什么这样就可以了呢?这里也没有注明是重载函数呀 然后保存编译运行,OK 但是还有个问题,就是“开心的”上面加了引号,这是由于“开心的”是QString类型,如果是char*类型就不会有引号,所以需要把他转换成char* QString转成char*的方法 把槽函数改成这样 这样就没问题了 〇 信号连接信号以及信号的断开 首先修改程序,不是一运行就ready,而是有个ready按钮,按了之后才会ready。 创建按钮,连接按钮和槽函数(这个是槽函数么?视频里说是) 用这种方式创建按钮之后窗口的大小会改变,所以需要resize一下 编译运行 OK 接下来修改语句,声明两个无参的函数指针并相连,然后创建新的按钮,与无参的信号函数连接 编译运行,界面是这样的 分别点击两个按钮 nice! 要断开信号的连接,可以加入以下语句 就断开了
♦ 关于信号和槽的拓展 ♦ 关于Qt4的connect函数的写法 〇 lambda表达式(并不懂。。什么时候用到再说) ♦ 使用lambda表达式实现点击按钮关闭窗口 ♣ 使用lambda表达式的好处是lambda表达式是函数,所以可以在其中调用其他函数,以此来实现无参信号调用有参函数的效果 ♣ lambda表达式一般用值传递[=]形式,用[&]有时候会报错(视频里说的) 〇 信号和槽总结
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |