信号与槽
例如当使用一个clickButton时,通过信号与槽函数clicked(),相当于windows里面的回调通信机制。
当设计好ui界面图标时,在头文件类中会自动声明这个槽函数
注意如果没有跳出提示,先构建一下
按住ctrl键点击setupUi,进入ui程序实现代码中查看结构
a.按下f4进入信号与槽关联编辑界面 b.按下f3 widget编辑模式
拓展:Qt中的connect(发送者对象指针,发送的信号,接收者(窗口),事件);可以学习一下。
如:
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(pushButton2slot()));
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT//为宏,有这个才能使用qt的信号与槽
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots://槽函数
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::MainWindow *ui;
bool deviceState;//表示设备连接状态
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
deviceState(false)//初始化该设备连接状态(需要在头文件的成员变量中定义,类型为bool)
{
ui->setupUi(this);//setupUi()函数内声明了
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()//去实现这个槽函数
{
//ui->plainTextEdit->setPlainText("设置文本名字");
ui->plainTextEdit->setPlainText(ui->pushButton->text());
}
void MainWindow::on_pushButton_2_clicked()
{
if (deviceState==false)
{
ui->pushButton_2->setText("连接状态");
deviceState=true;
}
else
{
ui->pushButton_2->setText("断开状态");
deviceState=false;
}
}