QT+VS2017学习笔记一:添加控件 连接信号与槽 点击控件按钮弹出子窗口 您所在的位置:网站首页 qt控制台程序没有弹出窗口 QT+VS2017学习笔记一:添加控件 连接信号与槽 点击控件按钮弹出子窗口

QT+VS2017学习笔记一:添加控件 连接信号与槽 点击控件按钮弹出子窗口

2023-08-20 17:48| 来源: 网络整理| 查看: 265

目录 创建新项目添加控件 button按钮给控件绑定信号与槽单击Button弹出子窗口(非模态)单击Button弹出子窗口(模态) 最近可能会做一些测试工具,于是想到了带GUI界面的QT,正好是C++语言开发比较熟悉,这里就记录下学习过程,QT+VS2017的安装和配置就不说了,网上一搜一大把,本篇作为开篇主要记录下如何用VS创建新的QT项目以及基本的添加控件并且绑定处理函数的流程(QT里面好像是叫做信号与槽的连接)

创建新项目

在这里插入图片描述 一会要弄个子窗口出来,所以这里起名就叫QtFather吧 然后一路Next就好,创建出来后解决方案的目录结构是这样的 在这里插入图片描述 简单介绍下:

QtFather.ui 编辑UI界面的,双击打开会出现Qt设计师窗口,里面会有一些控件提供给我们使用 在这里插入图片描述

QtFather.h和QtFather.cpp就是我们的主窗口类了 默认启动会弹出这个窗口来 在这里插入图片描述

main.cpp就是主函数入口了,这个暂时不多说

QtFather,也就是主窗口类中默认有个成员变量 Ui::QtFatherClass ui; 在这里插入图片描述 这里面包含了UI界面上的各种控件对象,一会会用到,可以F12进去看看

添加控件 button按钮 双击QtFather.ui 进入Qt设计师界面 左面栏目找到Push Button控件,直接拖进窗口即可 在这里插入图片描述双击控件给控件改名,右侧是控件信息,objectName就是这个控件的类名,编译后会在代码中体现 在这里插入图片描述保存后关闭,然后右键QfFather.ui编译一下(刚开始弄的时候竟然不知道还要编译…搞了半天:) 在这里插入图片描述编译后F12查看UI_QtFatherClass类会发现多了这个控件的变量,这样就能用了 在这里插入图片描述 给控件绑定信号与槽

刚添加好的控件,在QT中是不会自动给你绑定相关的处理函数的,还需要手动的绑定一下,先在窗口类中定义下pushButton的处理函数(名字随意) 在这里插入图片描述

然后在父窗口类的构造中调用connect函数进行绑定,也就是说一旦产生了clicked信号就调用pushButton_slots()函数

connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(pushButton_slots()));

注:避免和linux socket函数中的connect冲突,网络连接函数可以::connect(fd,…)这样用 在这里插入图片描述

单击Button弹出子窗口(非模态) 右键FormFiles,添加新窗口 在这里插入图片描述选择Qt GUI Class,一路next即可 在这里插入图片描述在父窗口中添加子窗口头文件 并定义子窗口的类指针 在这里插入图片描述然后在刚刚给控件注册的回调函数中new一个子窗口类出来,并调用子窗口的show函数显示即可 在这里插入图片描述避免内存泄漏,默认关闭子窗口是不会销毁这个类对象的所以要加上pSon->setAttribute(Qt::WA_DeleteOnClose); 单击Button弹出子窗口(模态)

首先还是重复上面操作,绑定一个button,然后在button单击的处理动作上添加如下代码 在这里插入图片描述 setWindowModality的几个参数选项含义:

Qt::NonModal :该窗口不是模态,不会阻塞其它界面接受输入信息; Qt::WindowModal:该窗口是一个当以层次的模态窗口,会阻塞它的父窗口、祖父窗口和各个兄弟窗口接受输入信息 Qt::ApplicationModal:该窗口是应用模态窗口,会阻塞所有窗口接受输入信息。

注意:本文创建新窗口的方式,从代码角度上QtSon和QtFather是没有任何父子关系的,所以说Qt::WindowModal并不会阻塞QtFather窗口,如果加入父子关系可以在new QtSon(Parent)传入参数指定该窗口的父窗口 在这里插入图片描述 这样也可以实现模态窗口



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有