一文带你了解Qt中槽的使用
音视频开发老舅 人气:0一、建立槽和按钮之间的连接
connect(信号发送者,发送的信号,信号接收者,信号接收者的槽函数)
1、例子
connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(showinfo()));
解释:
信号反发送者:pushButton(这是一个按钮),发送信号:clicked(点击按钮),信号接收者:this(本类),信号接收者的槽函数:showinfo(点击按钮后响应的函数)
二、槽函数的定义
(1)槽函数
protected slots: void showinfo();
(2)自定义带参数的槽函数
signals: void mysignal(); //自定义信号(不需要实现),发送信号emit mysignal()
槽函数应用例子:
1、在头文件中定义槽函数
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); //槽函数声明 protected slots: void showinfo();//槽函数 void myslot(); //自定义带参数的槽函数 signals: void mysignal(); //自定义信号(不需要实现),发送信号emit mysignal() void sendNum(int num); private slots: void on_closbt_clicked(); void getNum(int num); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
2、在源文件中建立按钮与槽函数之间的连接
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug.h> #include <QtWidgets/QStackedLayout> #include "form.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //把按钮的信号与本类的showinfo槽函数关联 connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(showinfo())); //把本类的信号mysignal与本类的槽函数myslot()关联 connect(this,SIGNAL(mysignal()),this,SLOT(myslot())); connect(this,SIGNAL(sendNum(int)),this,SLOT((int))); } MainWindow::~MainWindow() { delete ui; } //实现槽函数 void MainWindow::showinfo() { qDebug()<<"信号与槽函数测试"; //发送信号 emit mysignal(); } void MainWindow::myslot() { qDebug()<<"自定义信号触发"; } void MainWindow::getNum(int num) { qDebug()<<num; } void MainWindow::on_closbt_clicked() { emit sendNum(123); }
加载全部内容