QT中槽的使用
Posted 菜头大大
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中槽的使用相关的知识,希望对你有一定的参考价值。
一、建立槽和按钮之间的连接
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、在头文件中定义槽函数
1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include <QMainWindow> 5 6 namespace Ui { 7 class MainWindow; 8 } 9 10 class MainWindow : public QMainWindow 11 { 12 Q_OBJECT 13 14 public: 15 explicit MainWindow(QWidget *parent = 0); 16 ~MainWindow(); 17 //槽函数声明 18 protected slots: 19 void showinfo();//槽函数 20 void myslot(); 21 22 //自定义带参数的槽函数 23 signals: 24 void mysignal(); //自定义信号(不需要实现),发送信号emit mysignal() 25 void sendNum(int num); 26 27 private slots: 28 void on_closbt_clicked(); 29 void getNum(int num); 30 31 private: 32 Ui::MainWindow *ui; 33 }; 34 35 #endif // MAINWINDOW_H
2、在源文件中建立按钮与槽函数之间的连接
1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 #include <QDebug.h> 4 #include <QtWidgets/QStackedLayout> 5 #include "form.h" 6 7 MainWindow::MainWindow(QWidget *parent) : 8 QMainWindow(parent), 9 ui(new Ui::MainWindow) 10 { 11 ui->setupUi(this); 12 //把按钮的信号与本类的showinfo槽函数关联 13 connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(showinfo())); 14 15 //把本类的信号mysignal与本类的槽函数myslot()关联 16 connect(this,SIGNAL(mysignal()),this,SLOT(myslot())); 17 connect(this,SIGNAL(sendNum(int)),this,SLOT((int))); 18 } 19 20 MainWindow::~MainWindow() 21 { 22 delete ui; 23 } 24 25 //实现槽函数 26 void MainWindow::showinfo() 27 { 28 qDebug()<<"信号与槽函数测试"; 29 //发送信号 30 emit mysignal(); 31 } 32 33 void MainWindow::myslot() 34 { 35 qDebug()<<"自定义信号触发"; 36 } 37 38 void MainWindow::getNum(int num) 39 { 40 qDebug()<<num; 41 } 42 43 44 void MainWindow::on_closbt_clicked() 45 { 46 emit sendNum(123); 47 }
以上是关于QT中槽的使用的主要内容,如果未能解决你的问题,请参考以下文章
Python Qt GUI设计:多线程中信号与槽的使用(基础篇—9)