Qt基础编程

Qt是一种C++的跨平台开发工具,用于创建GUI应用。QApplication是界面应用的入口,处理时间循环和消息。qt5.15.2的下载和安装可能遇到网络问题,解决方法包括调整网络设置。创建项目时,需要理解application是应用程序,QApplication实例处理命令行参数。在高分屏上,需要启用高DpiScaling以适应不同分辨率。UI文件是用户界面的图形化设置,通过ui_*.h文件与代码关联。信号和槽是Qt的关键特性,用于对象间通信,可以使用lambda表达式简化槽函数定义。
摘要由CSDN通过智能技术生成

什么是Qt

Qt就是c++的一种跨操作系统平台的可视化开发工具

 qt5.15.2的下载

下载安装链接

安装过程中出现network error while......时的解决办法

创建项目

application是什么

application应用程序

作用

QApplication---界面应用入口

也就是 只要是要建立界面的QT项目都需要QApplication应用程序。

链接

exec()进入时间循环和消息处理

函数

QApplication a(argc, argv); 

argc和argv是命令行传进去的参数。比如linux里输入一个命令
cp file.c file1.c
那么argc=3 argv就是上面那行字符串数组。
因为图形编程有时也需要从命令行传递参数给程序,所以才会有argc和argv。

QT命令行参数

QT高分屏处理

高分屏---高分辨率屏幕

分辨率--链接

如果QT界面不做自适应分屏处理,当这个项目运用在不同的dpi屏幕上时就会出现界面混乱的问题-----链接

注意,QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);一定要加在QApplication创建 之前。

 可以创建的应用程序类型

基类的选择

三种窗口区别链接

QMainWindow基类创建的窗口

QWidget基类创建的窗口

 对话框基类窗口

 如何自动创建UI文件

什么是ui文件

用户界面文件  user interface

在中国文件里进行图形设置编程。

在生成的窗口中生成一个ui指针,这个是做什么的

 explicit关键字的作用

抑制了隐式转换,也就是不能使用“=”给类赋值,在这里就是为了防止对基类的初始化发送在派生类的构造函数内部,explicit关键字就要求派生类对基类的初始化必须在初始化列表中进行。

看它的类型,不就是本界面的一个指针对象吗

在main文件中创建一个mainwindow界面,mainwindow中有一个mainwindow的指针,然后再通过ui对象的setupUi函数把当前对象赋给ui指针,这样,就可以通过ui指针使用当前对象的属性进行设置了。

QT creator编译和调试工具

qt中的类模块

比如gui模块,sql数据库模块

文件关联

使用到特定的模块的时候怎么将指定的模块加入到本项目中

项目文件.pro

 加入类模块

 图形化界面文件.ui

.ui文件中设计的ui界面是怎么和其他文件建立连接关系的----ui_X.h文件

刚建立项目时没有这个文件,编译运行之后会自动生成,才可以打开

这里的X和窗口文件的文件名相同,这里是widget

 

这个文件在编译之后会生成GUI图形界面对应的代码

 Ui::Widget

widget.h中的Ui::widget只有声明

ui_widget.h中的Ui::widget完成定义

有些资料会说这两个不同文件里的ui::widget是两个不同的类,但是实际上是同一个类,只是在widget中先声明使用,在ui_widget.h中进行定义而已,如果不是这样,那第一个Ui::widget没有定义,怎么给定义的ui指针分配内存呢 

利用完成定义的Ui::widget给ui创建对象

ui控制着两部分内容

1,通过图形化界面转换的ui_widget.h中的代码;

2,通过setupUi()传递本窗口对象,让ui实现对这个对象的控制。 

类对象窗口实现的原理

其实,真正的窗口组件就是自己建立的那个类,这个类窗口通过两部分来实现:

1,自己编代码实现,

2,通过ui->setupUi()将这个类窗口发送给ui_x.h文件,系统通过ui文件将图形化组件以及功能翻译为代码,设置在传递过去的类对象窗口中。

信号和槽

什么是信号和槽

connect(发送对象,信号,接收对象,槽函数),Qt4版本中发送信号和槽函数需要用 SIGNAL() 和 SLOT() 来进行声明。

本质是什么

发送对象

就是发送信号的对象,比如按钮。

信号

就是特定的对象发送的事件,比如按钮发送的clicked(),本质上是一个函数。

接收对象

就是接受信号,并执行相应槽函数的对象,比如窗口。

槽函数

 信号和槽的规则

信号连接信号的时候,作为槽函数位置的信号会被触发

如果receiver是this表示什么

表示接受信号的对象是本窗口组件。

如果省略receiver表示什么

connect(ui->pushButton_todayPrice,&QPushButton::clicked,[=](){
    ui->stackedWidget->setCurrentIndex(0);
});

 利用lambda表达式实现槽函数

不需要接收对象,直接执行槽函数

QT4的信号和槽的连接的优缺点--SIGNAL,SLOT

1,可以直接传递函数以及参数,不用函数指针。

 2,缺点:编译阶段不会进行参数类型检查,运行阶段才会检测出来报错。

有SIGNAL,必须要有SLOT,也就是这两个必须同时使用

ui文件怎么设置信号和槽

1,直接连接

2,转到槽函数

右键转到槽

比如将PushButton转到槽函数,就是选择这个按钮作为发射信号的对象,选择好信号的类型之后就会为中国信号建立一个槽函数。

在UI界面进行的信号和槽的建立不需要自己去连接信号和槽。

自定义信号和槽

信号

槽函数

各种信号的功能和区别

信号翻译功能使用对象
clicked()点击按钮
clicked(bool)
triggered()触发菜单项,工具栏,快捷键
triggered(bool)

信号有bool和没有bool参数的原因和区别

像按钮,菜单项这些组件checkalbe属性默认都是false,所谓的checkable属性就是触发这些对象的时候,会给信号函数传递一个bool类型的值,表示这个对象的状态,默认都是false,也就是默认组件的状态不可以改变,如果要改变,可以通过setCheckable(true)成员函数改变,改变之后,这个组件传递的状态就会一次true,一次false.

控件的属性

cheakable

有可选和不可选两种状态。

按钮电机会返回true,false两两种状态值

 isCheckable和isChecked

isChecked记录按钮是否被选中,选中返回1,取消返回0;

isCheckable记录的是按钮是否可以被选中;

setCheckable

setCheckable()设置按钮是否可选状态

QT怎么打印输出字符串

qt中不能使用cout,要用qDebug()函数

注意:

1,qDebug输出完所有数据之后会自动换行

2,qDebug()每一个“<<”都会输出一个空格

Qt中的字符串

Qt中的字符串对象是QString

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值