QT学习笔记一

目录

1、下载安装

二、创建项目

 三、UI操作界面介绍

四、程序文件介绍

 五、信号与槽


1、下载安装
 

下载路径Index of /archive/qt 

以下载window平台下的Qt5.12.9版本举例(注意!!这里下载记得要下载5版本以上的,因为5版本以上的自带打包工具:windeployqt)

这里跳过即可,Qt 在安装过程中会提示用户进行注册和登录,不用理会,实际开发时不需要登录

Qt 安装过程中最关键的一步是组件的选择

(其他步骤按照默认进行即可,这里不再截图展示)

二、创建项目

左上角文件,点击新建,然后会弹出来这个界面

这个界面,左侧是选择新建的是工程还是单个文件,单个文件一般都是新建一个类或者新建一个ui界面等等用到, 我们新建一个工程,选择Application,然后中间的是选择样式,第一个是窗口程序,第二个是控制台程序,我们新建一个窗口程序。
选择完毕之后,输入项目名称,注意名称不能有中文,不能有空格,然后确定路径,注意路径不能有中文路径。
然后一直下一步,到这个界面

默认创建的窗口类是QMainWindow,可以选择的基类有: QWidget(单一的窗口,常用) 、QMainWindow(主界面)、QDialog(对话框),其中MainWindow比Widget多了一些常用的控件,例如菜单栏之类。

 三、UI操作界面介绍

四、程序文件介绍

 pro文件相当于一个配置清单

QT       += core gui   Qt包含的模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  //大于4版本以上 包含 widget模块

TARGET = MyTest  //目标   生成的.exe程序的名称
TEMPLATE = app       	  //模板   应用程序模板  Application


SOURCES += \                //源文件
        main.cpp \
        mainwindow.cpp

HEADERS += \                //头文件
        mainwindow.h

FORMS += \                    //ui文件界面
        mainwindow.ui

.h自定义代码块

#ifndef MAINWINDOW_H   // 防止重复包含
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; } 	//定义命名空间Ui
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
     Q_OBJECT // 所有用到信号的类都要加这个宏

public:
     // 公开成员部分
     MainWindow(QWidget *parent = nullptr);
     ~MainWindow();

private slots:
     // 私有槽函数的声明区
     void set();   // 举个例子,函数名自定义

private:
     // 私有成员部分
     Ui::MainWindow *ui;
};
#endif // MAINWINDOW
.cpp 定义文件

main.cpp主文件

#include "mainwindow.h"

#include <QApplication>    
//包含QApplication类的定义。每个应用程序中都必须使用QApplication对象
//QApplication管理了各种各样的应用程序的广泛资源,比如默认的字体和光标,以及软件的生命周期

int main(int argc, char *argv[])   // argc 命令行变量的数量  argv 命令行变量的数组
{
    // 创建 QApplication 对象开始软件运行
    // 它在这里被处理这些命令行变量。所有被Qt识别的命令行参数都将从agrv中被移去
    // 并且argc也因此而减少
    QApplication a(argc, argv);

    // 创建 主窗口对象 w
    MainWindow w;   

    // show() 使图形对象显示在屏幕
    w.show();

    return a.exec();
    // 阻塞 程序进入消息循环,等待可能的输入进行响应
    // main() 函数将控制权转交给Qt
    // 应用程序退出的时候,exec() 函数的值就会返回,然后结束 main函数
    // 在exec() 函数中,Qt监听用户和系统的事件并且将信号传递给适当的窗口部件
}

 .cpp定义文件

#include "mainwindow.h"
// ui_mainwindow.h 文件是Qt根据.ui文件自动生成的,即要点击构建后才生成
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) 
    : QMainWindow(parent) , 
      ui(new Ui::MainWindow)
{
	ui->setupUi(this);	// 进行界面初始化
}

MainWindow::~MainWindow()
{
	delete ui;	// 删除ui
}



void set()    //槽函数实现
{
     // 函数体自定义
     // 表示接收到信号时,某部件需要执行的操作
}

// connect() 将信号与槽关联
// 语法:connect( 发出信号的对象, SIGNAL(信号), 接收信号的对象, SLOT(槽函数) );
// connent() 不需要在 .h 文件声明
connect(Obj, SIGNAL(clicked()), this, SLOT(set()));
// 这个connent函数将 Obj对象与set()槽函数关联,当你按下Obj,则set()会执行一些操作

 .ui 图形样式文件

ui 文件由 XML 语言描述组成,编译时会生成相应的 cpp 文件,这样交叉编译器就可以编译它了。mainwindow.ui 是一个 xml 类型的文件。
ui 文件是生成的不能手动编辑,只能够通过图形界面修改其属性,双击 mainwindow.ui 后可以跳转到设计界面

 五、信号与槽

信号和槽是Qt的一个特色,当一个类运行的时候,调用信号,就会触发相应的槽函数,同时信号函数还可以传递参数给槽函数。某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。

我们打开Qt ui设计师,在里面放一个组件,右键点击它就可以转到槽了

转到槽qt会提供很多信号函数给你用,一个信号函数代表了一个事件,当事件发生的时候就会调用相应的信号函数;
例如clicked():当这个按钮被点击的时候触发的信号函数

 

 选好信号函数之后,Qt会很贴心的帮你命好槽函数的名字,并帮你绑定对应的信号函数,我们只需要在函数里添加需要执行的操作就好了。

 

也可以显示的把信号函数和槽函数的绑定写出来,或者你想自己绑定其他的信号或者槽函数:
通过连接函数实现
连接函数 :connect(参数1,参数2,参数3,参数4)

信号与槽的关联是用QObject::connect()函数实现的。connect()是QObject类的一个静态函数,而QObject是所有Qt类的基类。在实际调用时也可以忽略前面的限定符,直接调用connect

连接函数 :connect(参数1,参数2,参数3,参数4)
参数1 信号的发送者
参数2 发送的信号(函数地址)
参数3 信号的接受者
参数4 处理的槽函数 (函数的地址)

三种书写方式:

    //连接信号与槽,谁发出信号,发出什么信号,谁处理信号,怎么处理
    //方式一
    connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(on_commit_clicked()));
    //方式二
    connect(ui->cancel,&QPushButton::clicked,this,&MainWidget::on_cancel_clicked);
    //方式三
    connect(ui->browse,&QPushButton::clicked,[this]()
    {
            QMessageBox::information(this,"信息","点击浏览");
    });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值