当前位置: 首页 > article >正文

QT 12.自定义信号、信号emit、信号参数注册_ev

效果

用 自定义信号和槽函数实现窗口间的数据传递。

1.自定义信号

    //自定义信号
signals:
    void sig_addOne(int value);

2.发送信号和数据

int val = 100;
void SetDialog::on_btnAdd_clicked()
{
    //发送信号
    emit sig_addOne(val);
    val++;
}

3.连接信号和槽

void Widget::on_btnOpen_clicked()
{
    SetDialog dlg;
    //连接信号和槽
    //&dlg 发送者,
    //&SetDialog::sig_addOne 发送的信号
    //后面是接收者和槽函数
    connect(&dlg,&SetDialog::sig_addOne,[=](int value){
        ui->lineEditNumber->setText(QString::number((value)));
    });
    dlg.exec();
}

完整代码

头文件

setdialog.h

#ifndef SETDIALOG_H
#define SETDIALOG_H

#include <QDialog>

namespace Ui {
class SetDialog;
}

class SetDialog : public QDialog
{
    Q_OBJECT

public:
    explicit SetDialog(QWidget *parent = nullptr);
    ~SetDialog();

private slots:
    void on_btnAdd_clicked();

    //自定义信号
signals:
    void sig_addOne(int value);

private:
    Ui::SetDialog *ui;
};

#endif // SETDIALOG_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_btnOpen_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

2.源文件

setdialog.cpp

#include "setdialog.h"
#include "ui_setdialog.h"

SetDialog::SetDialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::SetDialog)
{
    ui->setupUi(this);
}

SetDialog::~SetDialog()
{
    delete ui;
}

int val = 100;
void SetDialog::on_btnAdd_clicked()
{
    //发送信号
    emit sig_addOne(val);
    val++;
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "setdialog.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_btnOpen_clicked()
{
    SetDialog dlg;
    //连接信号和槽
    //&dlg 发送者,
    //&SetDialog::sig_addOne 发送的信号
    //后面是接收者和槽函数
    connect(&dlg,&SetDialog::sig_addOne,[=](int value){
        ui->lineEditNumber->setText(QString::number((value)));
    });
    dlg.exec();
}

3.界面文件

setdialog.ui

widget.ui


http://www.kler.cn/a/373183.html

相关文章:

  • 论文检索与写作1
  • Oracle视频基础1.1.4练习
  • Mongodb使用视图连接两个集合
  • git快速合并代码dev->master
  • 盘点:2024年最新热门项目管理平台TOP11
  • 利士策分享,赚大钱与赚小钱的哲学,选大还是小?
  • 【Python · Pytorch】人工神经网络 ANN(中)
  • Agile敏捷方法
  • 内存马浅析
  • 关于深度学习方向学习的一些建议
  • 计算机低能儿从0刷leetcode | 33.搜索旋转排列数组
  • 10.30Python_异常文件操作json正则
  • 12. MapReduce全局计数器
  • Vue3实现地球上加载柱体
  • 如何将 Excel 数据转换为 SQL 脚本:从入门到实战
  • C# 将批量图片转为PDF文件
  • ts:模块导入、导出的简单使用(export、import)
  • 【Vue3】第二篇
  • 2024年“炫转青春”山东省飞盘联赛盛大开赛——临沭县青少年飞盘运动迅速升温
  • 文本分段Chunking综述-RAG
  • 解决:如何在opencv中得到与matlab立体标定一样的矫正图?(python版opencv)
  • 【无人机设计与控制】红嘴蓝鹊优化器RBMO求解无人机路径规划MATLAB
  • R变量索引 - 什么时候使用 @或$
  • webrtc agc2实现原理
  • 高通 Android 12 首次安装去掉下拉弹窗
  • 书生实战营第四期-第三关 Git+InternStudio