QT学习笔记(二)

QT学习笔记(二)

咕了好久了,假期学习动力严重欠费,该好好写写blog了。

信号与槽机制初探

信号与槽机制是Qt中一个独特的机制,比如当你按下一个button控件的时候,会发出一个信号,通过创建一个槽来捕获这个信号,捕获时候执行特地的动作,即Qt中的信号发出与处理——信号与槽。

信号与槽的两种简单实现方式

信号与槽的手动绑定

首先打开Qt先新建一个项目,布局一个Push Button,

mainwindow.h里声明槽函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();

//这里是添加的地方
public slots: //槽函数声明标志
void A_example(); //槽函数

private:
Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

声明槽函数后,就要编写槽函数了,可以参考这个链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//添加关联代码,必须放在 setupUi 函数之后
connect(ui->test, SIGNAL(clicked()), this, SLOT(A_example()));
}

MainWindow::~MainWindow()
{
delete ui;
}

//槽函数定义代码,与普通成员函数类似
void MainWindow::A_example()
{
QMessageBox::information(this, tr("Example"), tr("My Test"));//Qt中使用字符串要用tr函数,原因是tr会调用translate函数,实现一个多国语言翻译功能,比如tr函数里面写的是英文,可以导入翻译包,将英文转换为其它语言
}

跑一下试试

信号与槽的自动绑定

在这里右击控件,选择转到槽。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//添加关联代码,必须放在 setupUi 函数之后
}

MainWindow::~MainWindow()
{
delete ui;
}

//槽函数定义代码,与普通成员函数类似
void MainWindow::on_test_clicked()
{
QMessageBox::information(this, tr("two"), tr("TWO"));
}

可见运行结果,第二种方法无需自己写connect,较为方便。

1V63h8.jpg

文章目录
  1. 1. QT学习笔记(二)
    1. 1.1. 信号与槽机制初探
      1. 1.1.1. 信号与槽的两种简单实现方式
        1. 1.1.1.1. 信号与槽的手动绑定
        2. 1.1.1.2. 信号与槽的自动绑定
,