信号与槽机制是Qt进行UI设计时必须要掌握的一个知识点。信号能触发槽函数的前提条件是已经将信号函数与槽函数用connect函数连接,并且这里的信号函数和槽函数都可进行自定义。另外,还有一种简化方式,即通过对槽函数的规则命名来省略connect函数。这里用一个小例子进行对比说明:
一、界面布局和控件设置
整体结构
样式设置
background-color:green;
font: 14pt "Agency FB";
color:red;
background-color:black;
font: 14pt "Agency FB";
color:red;
二、具体代码
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QtSignalSlot.h"
class QtSignalSlot : public QMainWindow
{
Q_OBJECT
public:
QtSignalSlot(QWidget* parent = nullptr);
~QtSignalSlot();
private slots:
void slot_pushButton();
void on_pushButton_2_clicked();
private:
Ui::QtSignalSlotClass ui;
};
#include "QtSignalSlot.h"
#pragma execution_character_set("utf-8")
QtSignalSlot::QtSignalSlot(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(slot_pushButton())); //传统方式
}
QtSignalSlot::~QtSignalSlot()
{}
void QtSignalSlot::slot_pushButton()
{
ui.label->setText("这是用 基于connect的传统 方式实现的槽函数");
}
void QtSignalSlot::on_pushButton_2_clicked() //采用 on_控件名_信号() 命名法,省略connect
{
ui.label_2->setText("这是用 on_控件名_信号() {...} 方式实现的槽函数");
}
三、效果展示
分别按“方式一”和“方式二”,各自下面的QLabel分别进行响应。