• 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. #include
    4. namespace Ui {
    5. class MainWindow;
    6. }
    7. class MainWindow : public QMainWindow
    8. {
    9. Q_OBJECT
    10. public:
    11. explicit MainWindow(QWidget *parent = 0);
    12. ~MainWindow();
    13. //槽函数声明
    14. protected slots:
    15. void showinfo();//槽函数
    16. void myslot();
    17. //自定义带参数的槽函数
    18. signals:
    19. void mysignal(); //自定义信号(不需要实现),发送信号emit mysignal()
    20. void sendNum(int num);
    21. private slots:
    22. void on_closbt_clicked();
    23. void getNum(int num);
    24. private:
    25. Ui::MainWindow *ui;
    26. };
    27. #endif // MAINWINDOW_H

    2、在源文件中建立按钮与槽函数之间的连接

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. #include
    4. #include
    5. #include "form.h"
    6. MainWindow::MainWindow(QWidget *parent) :
    7. QMainWindow(parent),
    8. ui(new Ui::MainWindow)
    9. {
    10. ui->setupUi(this);
    11. //把按钮的信号与本类的showinfo槽函数关联
    12. connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(showinfo()));
    13. //把本类的信号mysignal与本类的槽函数myslot()关联
    14. connect(this,SIGNAL(mysignal()),this,SLOT(myslot()));
    15. connect(this,SIGNAL(sendNum(int)),this,SLOT((int)));
    16. }
    17. MainWindow::~MainWindow()
    18. {
    19. delete ui;
    20. }
    21. //实现槽函数
    22. void MainWindow::showinfo()
    23. {
    24. qDebug()<<"信号与槽函数测试";
    25. //发送信号
    26. emit mysignal();
    27. }
    28. void MainWindow::myslot()
    29. {
    30. qDebug()<<"自定义信号触发";
    31. }
    32. void MainWindow::getNum(int num)
    33. {
    34. qDebug()<
    35. }
    36. void MainWindow::on_closbt_clicked()
    37. {
    38. emit sendNum(123);
    39. }

    本文福利, 免费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT图像,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓ 

  • 相关阅读:
    反射(类加载、加载流程、加载的五个阶段、获取类结构信息、反射暴破创建实例、操作属性、操作方法)
    前端格式化工具
    Sigrity仿真之电热混合仿真
    Php根据生日计算年龄
    图Graph
    Vue 表格动态添加行/删除行
    如何使用 uni-app 30分钟快速开发即时通讯应用|开发者活动
    C语言——如何写出好的代码?
    ArcGIS实战教程
    快速排序(c语言代码实现)
  • 原文地址:https://blog.csdn.net/m0_60259116/article/details/127653422