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中槽的使用的主要内容,如果未能解决你的问题,请参考以下文章

Qt信号和槽的问题

Qt在多线程中使用信号槽的示例

Python Qt GUI设计:多线程中信号与槽的使用(基础篇—9)

QT中信号与槽的常见使用

Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

Qt每天一例17.信号槽的一些写法技巧