7.3 Qt图形程序设计 【C++】

一、Qt的介绍

Qt是一个跨平台的C++图形用户界面(GUI)的应用程序框架。

父类也叫基类
子类也叫派生类

二、Qt的框架

main.cpp文件

#include "mywidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
      
    QApplication a(argc, argv);
    // 我们写的代码    
    return a.exec();
}

在这里插入图片描述

三、项目文件( .pro )

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

四、第一个Qt程序

新建一个空项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

添加main.cpp文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

【注意: 如果忘记写 w.show( ) ,则第一次运行时,是OK的,但没弹出窗口;
第二次运行,会报错。 因为其实代码在第一次运行时就一直在运行,没有关掉。
解决办法:先关掉第一次执行的代码】
在这里插入图片描述

设置标题

【QT上用MSVC去编译部分含有中文的字符串时会出现编译错误error: C2001: 常量中有换行符,但用MinGW就不会。需在后面加个正常的字符才能正常编译,但出现乱码了。其编码如下图】
在这里插入图片描述
在这里插入图片描述

五、父窗口和子窗口的区别(控件,部件,构件)

在这里插入图片描述
在这里插入图片描述
    弹出两个独立的窗口,而我们想要的结果并不是这样,而是把按钮(窗口)放在另一个窗口上面,怎么办?

  • 如果不指定父对象,对象和对象(窗口和窗口)没有关系,独立
  • a指定b为它的父对象,a放在b的上面
  • 指定父对象,有2中方式:
  •              1)setParent
    
  •              2)通过构造函数传参
    
  • 指定父对象,只需要父对象显示,上面的子对象自动显示

     即怎么指定父对象呢?
在这里插入图片描述

在这里插入图片描述

        那怎么把按钮 移位呢?

在这里插入图片描述
    刚才说将按钮放到 另一个窗口,除了上面介绍的setParent(), 那还有通过构造函数传参的方法呢?
    即怎么 指定父对象?

在这里插入图片描述
在这里插入图片描述

六、信号和槽

重新创建工程: 【不用创建空项目了,以后创建的工程就是这样创建,它会给我们一个模板】

    1. 信号和槽,信号类比于短信,槽类比于接收短信的手机
1)信号:普通函数(signals:),只需声明无需实现
2)槽函数:Qt 5 类中的任意成员函数,静态函数,全局函数,Lambda表达式
3)信号和槽可以使用Qt内部定义好的,也可以自定义
4)信号和槽式没有返回值,但是可以有参数
5)信号和槽的参数列表顺序必须一致
void sig1(int, double, char);
void slot1(int, double, char);
6)信号和槽的参数个数可以不一样
信号的参数个数可以大于槽函数参数的个数
槽函数个数不可以大于信号参数个数

    2. 信号槽的扩展:
1)一个信号可以连接多个槽函数
槽函数执行的顺序是随机的,不能控制
2)一个槽函数可以被多个信号连接
3)信号可以连接信号
4)信号槽连接成功后,可以断开连接disconnect
5)槽函数可以是Lambda表达式

在这里插入图片描述
在这里插入图片描述

    我们之前创建了有按钮的工程(代码放在main函数中),那我们实际上要怎么弄呢? 难道100个按钮都放在main函数中吗?
    这肯定不是的,我们把按钮的代码放在子类MainWidget的构造函数中。

在这里插入图片描述

    在mainwidet.cpp的构造函数中指定父对象, QPushButton b; 这样没用,因为执行完构造函数,对象b也会消失,所以到时候跳出构造函数代码,去执行main.cpp的 show( )时,已经没有b了
在这里插入图片描述
    按钮那三行代码已经执行完就没有了,所以到时候后面的 w.show( ) 就显示不出来了

    修改: 应该在 mainwidegt.h指定父对象 QPushButton b; 这样使得对象 b 在执行完构造函数时,对象b 依然存在

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

    那怎么使得按钮 按下去有反应? 【标准信号和槽】

功能: 实现点击b1按钮close ; 则会关闭窗口

在这里插入图片描述
自定义槽

    功能:实现对b2按钮的 按钮点击后,变化内容

在这里插入图片描述

在这里插入图片描述
    功能: 实现2个独立窗口,都各自有一个按钮, 按下按钮,自身窗口消失,另一个窗口显示

在这里插入图片描述

在这里插入图片描述已经完成一个窗口,那怎么新建另一个窗口呢?

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值