信号与槽机制
一种部件之间的通信机制。
比如单击窗口上一个按钮然后弹出一个对话框,那么就可以将这个按钮的单击信号和自定义的槽关联起来,信号是按钮的单击信号,槽实现了创建一个对话框并显示的功能。
connect函数
将信号与槽连接起来的函数
其格式:
connect(sender, &Sender::valueChanged,receiver, &Receiver::updateValue);
&Sender::valueChanged就是信号发送的事件,&Receiver::updateValue是槽收到信号后执行的事件
简单示例
其代码结构:
首先在UI设计界面中添加这些按键:
接下来我们为New设计一个槽
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void newDocument();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
这里声明了一个槽函数newDocument()
在mainwindow.cpp中:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->actionNew,&QAction::triggered,this,&MainWindow::newDocument);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::newDocument()
{
ui->textEdit->setText("new document");
}
connect函数将信号与槽函数连接,这里QAction::triggered表示点击按键时发送信号。
在定义newDocument的操作,即将文本框中的文字设置为new document。
结果
点击New之前
点击New之后