• 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 }
  • 相关阅读:
    关于Maven项目的pom.xml中的依赖或插件失效的解决方法
    java引用数据类型在方法中的值传递
    java匹配http或https的url的正则表达式20180912
    java正则表达式的进阶使用20180912
    java线程池 多线程 搜索包含关键字的文件路径
    魔术球问题
    [SDOI2009]晨跑
    [洛谷P2045]方格取数加强版
    最小路径覆盖问题
    最长不下降子序列问题
  • 原文地址:https://www.cnblogs.com/wurenzhong/p/7818098.html
Copyright © 2020-2023  润新知