目录一、建立槽和按钮之间的连接二、槽函数的定义一、建立槽和按钮之间的连接 connect(信号发送者,发送的信号,信号接收者,信号接收者的槽函数) 1、例子 connect(ui-&
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);
}
到此这篇关于一文带你了解Qt中槽的使用的文章就介绍到这了,更多相关Qt槽内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 一文带你了解Qt中槽的使用
本文链接: https://lsjlt.com/news/175180.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0