QT中信号与槽的连接

2023-10-31

本文章主要通过代码的形式讲解QT中connect函数对于信号和槽函数的连接。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    //创建一个按钮
//    QPushButton *btn = new QPushButton("下课",this);
    //show以顶层方式弹出窗口控件
   /* btn -> show();*///此处直接调用show函数会导致按钮不会再主框中显示,而是单独作为一个界面显示
//    btn ->setParent(this);//指定QWidget作为btn的父类,其中this是作为QWidget的指针
//    btn -> setText("第一个按钮");//显示文本

    //创建二个按钮
//    QPushButton *btn1 = new QPushButton("第二个按钮",this);
//    btn1->move(100,100);//按钮键的移动
//    resize(600,400);//设定主窗口大小

//    setFixedSize(600,400);//设置固定窗口大小

//    setWindowTitle("窗口");//设置窗口标题

    ui->setupUi(this);
    //创建一个老师的对象,
    this ->zt = new teacher(this);
    //创建一个学生的对象
    this ->st = new student(this);
//    connect(zt,&teacher::hunger,st,&student::treat);


    void(teacher::* teacherSignal0)() = &teacher::hunger;
    void(student::* studentSlot0)(void) = &student::treat;
    connect(zt,teacherSignal0,st,studentSlot0);

    //引用重构函数时需要建立指针来指向具体的函数地址,否则计算机将无法判断程序执行的具体函数
    void (teacher::* teachersignal)(QString) = &teacher::hunger;
    void (student::* studentsignal)(QString) = &student::treat;
    connect(zt,teachersignal,st,studentsignal);
//    classisover();

    QPushButton* btn = new QPushButton("下课",this);

    connect(btn,&QPushButton::clicked,zt,teacherSignal0);//此处不能调用teachersignal,否则会报错(信号与槽不匹配)static assertion failed: Signal and slot arguments are not compatible.
//    connect(btn,&QPushButton::clicked,this,&MainWindow::classisover);

    disconnect(zt,teachersignal,st,studentsignal);//断开连接
}

void MainWindow::classisover()
{
    //emit用于触发自定义信号
   emit zt ->hunger();
    emit zt ->hunger("老师饿了");
    qDebug() << "------------";
}

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

       上述代码在我首次编写时由于疏忽使得连接的槽函数为带参槽函数“connect(btn,&QPushButton::clicked,zt,teachersignal);”导致运行时出现了“(信号与槽不匹配)static assertion failed: Signal and slot arguments are not compatible.”。导这错误的原因在于信号与槽函数数据类型不匹配。

上述阐述为个人理解,如果有措辞不当或不准确的地方请批评指正。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT中信号与槽的连接 的相关文章

  • 对齐坐标系

    Let s say I have 2 coordinate systems as it is shown in image attached 如何对齐这个坐标系 我知道我需要将第二个坐标系围绕 X 平移 180 度 然后将其平移到第一个坐标
  • 调整 QML 图像显示尺寸

    我有一个带有嵌套的 QML 窗口RowLayout 在内排我有两个图像 来源 png这些图像的文件 故意 相当大 当我尝试设置height这些图像上的属性使它们变小 但它们仍然被画得很大 Desired Appearance Actual
  • 安装多个版本的 Qt 库

    我在windows中安装了QtSDK 它的Qt库版本是4 7 0 现在我想为 mingw 和 VS2008 安装 Qt 库版本 4 8 2 我怎样才能做到这一点 如何向QtCreator引入多个版本 注意 我已经从以下位置下载了库http
  • MAC 上的 QT/C++ - 未设置应用程序图标

    我正在努力解决的奇怪问题 在与我的 pro QT 项目文件相同的文件夹中 我有一个 Resources myIcon png 我试图将其设置为我构建的应用程序的图标 在 OSX 上运行 我阅读了文档 它建议在 pro 文件中添加 ICON
  • 从 QML 实例化 C++ 对象会产生巨大的内存使用开销

    实例化一个QObjectC 堆中的派生类为每个对象提供了大约 160 个字节 通过注册相同的对象qmlRegisterType 用于从 QML 创建并通过以下方式动态创建对象createObject 每个对象给我 2000 多个字节 这是完
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • QT/QML Android App,点击通知栏时打开应用程序

    我为 Android 应用程序制作了一个 QT 当我单击平板电脑中上面看到的按钮通知栏时 但是 如果单击通知 我的应用程序将打开 聚焦 不知道 并显示黑色窗口 简单来说怎么做呢 我的代码是 package org ays operation
  • (如何)我可以抑制未找到包配置文件的警告吗?

    我正在尝试创建一个CMakeLists txt尝试查找的文件Qt5 如果失败 则尝试回退到Qt4安装 该脚本到目前为止有效 但如果出现以下情况我总会收到警告Qt5未安装 注意FindQt5 cmake是由提供Qt5并且仅当以下情况时才可用Q
  • Qt mouseReleaseEvent() 未触发?

    我有一个显示图片的库 我们称之为 PictureGLWidget 其中 class PictureGLWidget public QGLWidget 所以 PictureGLWidget 扩展了 QGLWidget 在PictureGlWi
  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 从布局中按名称获取小部件

    如果我想从 python Qt 的布局中获取特定的小部件 我应该如何进行 到目前为止我所做的 for i in range self ui horizontalLayout 14 count here it does fail name s
  • QGraphicsScene::clear 不会改变 sceneRect

    我有一个 QGraphicsScene 场景 和 QGraphicsView graphicsView 我有一个画图的方法 当我需要重绘所有图形时 我调用这个方法 一切都好 但我意识到 scene gt clear 不会改变 sceneRe
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 即使在可访问性中勾选应用程序,AXIsProcessTrustedWithOptions 也不会返回 true

    As this question https stackoverflow com questions 17693408 enable access for assistive devices programmatically on 10 9
  • Qt:测量事件处理时间

    我想测量我的应用程序中的哪些事件在主线程中需要很长时间才能执行 阻塞 GUI 或者至少是否有任何事件花费的时间超过 比如说 10 毫秒 显然 我对需要很长时间的任务使用线程和并发 但有时很难在其他线程中放入的内容和可以保留在 GUI 中的内
  • Qt:在多个布局中使用一个小部件

    我有一个 QTabBar 所有选项卡都应该有相同的小部件 layout1 gt addWidget w layout2 gt addWidget w 然而打电话addWidget第二次导致该小部件在第一个布局中消失 有没有办法使用一个小部件
  • Qt 5.6 测试版 Visual Studio 2015

    我已经安装了这个 http download qt io development releases qt 5 6 5 6 0 beta qt opensource windows x86 msvc2015 5 6 0 beta exe mi

随机推荐

  • Dijkstra算法和Floyd算法对比分析

    转载 http blog csdn net liuyanling cs article details 56330652 首先 Dijkstra算法与Floyd算法都是广度优先搜索的算法 都可以用来求单源点到其他所有点的最短路径 那么这两者
  • Go mod 全部操作命令

    一 基础理论 shell 1 Go mod 初始化 go mod init 模块名 2 Go mod 下载到本地Cache go mod download 2 Go mod 清理本地Cache go clean modcache 3 Go
  • IDEA查看调用方法代码上一步和下一步

    IDEA默认上一步是CTRL ALT 箭头 IDEA默认下一步是CTRL ALT 箭头
  • 2020暨南大学计算机专硕考研经验分享

    具体的研究生招生录取情况 初试复试比例 和初复试的流程可以看下面链接这篇 总结得很好 2020暨南大学计算机考研经验分享 精品 含录取名单 学习等资料获取 前期都是各位学长的帮助 真的非常感谢 尤其了知乎上分享经验的18级李学长 集中资料
  • stata怎么判断是否存在异常值_异常值的识别与处理,看这一篇就够了

    原标题 异常值的识别与处理 看这一篇就够了 在数据分析工作中 面对收集而来的数据 数据清洗是首要环节 而异常值处理是其中的一个重要部分 下面就给大家介绍一下如何处理数据中的异常值 一 异常值判断 何为异常值 异常值 指的是样本中的一些数值明
  • 关于CLion有时找不到标准库的解决方案

    关于CLion有时找不到标准库的解决方案 CLion是linux下C 开发的利器 出色的语法高亮 支持cmake工程让同类IDE望尘莫及 但是我在实际开发中遇到了标准库 STL 相关的语法高亮不能正常运行的问题 问题情境 我们用UBUNTU
  • PyQt QTextEdit 详细用法示例 Python

    PyQt QTextEdit 详细用法示例 Python QTextEdit 是 PyQt 中用于显示和编辑文本的小部件之一 它提供了丰富的功能 包括文本格式化 文本样式 撤销和重做操作等 在本文中 我们将探讨 QTextEdit 的详细用
  • unity could not produce class with id 210 --- TerrainInstance 其实是 UnityEngine.CoreModule.Sorting

    Strip Engine Code 幾重 張 巡 罠 https qiita com warapuri items e2562e9535bfae5013d0 More than 1 year has passed since last up
  • 在windows下详解:大端对齐和小端对齐

    计算机的内存最小单位是什么 是BYTE 是字节 一个大于BYTE的数据类型在内存中存放的时候要有先后顺序 高内存地址放整数的高位 低内存地址放整数的低位 这种方式叫倒着放 术语叫小端对齐 电脑X86和手机ARM都是小端对齐的 高内存地址放整
  • IP地址、子网掩码、网络地址、广播地址、IP网段

    文章目录 IP地址 IP地址分类 子网掩码 网络地址 广播地址 IP网段 本文主要讨论iPv4地址 IP地址 实际的 IP 地址是一串32 比特的数字 按照 8 比特 1 字节 为一组分成 4 组 分别用十进制表示然后再用圆点隔开 这就是我
  • 关于CMAKE 报错CMAKE_CUDA_ARCHITECTURES的问题

    背景 新版本cmake 增加了CMAKE CUDA ARCHITECTURES检测 某些手动安装cuda的同学会遇到该报错问题 该问题不影响代码 只是cmake内部的编译设置 cmake 3 23版本该问题报错为 CMAKE CUDA AR
  • java渗透测试基础之——RMI

    一 概述 RMI全称是Remote Method Invocation 远程方法调用 是专为Java环境设计的远程方法调用机制 远程服务器提供API 客户端根据API提供相应参数即可调用远程方法 由此可见 使用RMI时会涉及到参数传递和结果
  • 利用python建立股票量化交易系统(一)——小市值选股票模型

    从今天开始正式开启我的博客之旅 博客内容全部是我自己的量化心得 主要还是为自己将来中工作之中遇到相似问题 可以方便的找到答案 如果能帮到有相似问题的其他同学 我也很开心 如果帮不到的话 不喜勿喷 如果文章中有什么不对的地方 欢迎批评指正 建
  • 新版QQ代挂系统源码四套模板

    介绍 代挂源码 代挂对接教程源码已简洁版优化框架数据 对接代挂教程均在 压缩文件里 源码进行了优化 原后门已清楚掉 上传源码解压即可安装访问网址 网盘下载地址 https zijiewangpan com VylBgT70aLu 图片
  • 连接Charles后,小程序无法打开,提示“运行失败”解决方法

    今天在使用Charles抓包的过程中 手机端安装了证书 并且证书安装成功 使用手机浏览器可以正常抓包 但是在使用微信打开小程序准备测试时 无法打开 并且提示 运行环境失败 于是做了以下几个操作 最后可以成功抓包 1 微信版本升级 将微信卸载
  • Java代码中如何判断一个HashMap对象是否为空呢?

    转自 Java代码中如何判断一个HashMap对象是否为空呢 下文讲述检测HashMap集合对象是否无元素的方法分享 如下所示 实现思路 使用isEmpty方法即可检测HashMap中的元素是否为空 isEmpty 语法 hashmap i
  • 学习Javascript的书籍

    原文地址 http www ruanyifeng com blog 2008 01 javascript book recommendation html 作者 阮一峰 日期 2008年1月 9日 昨天 ppip同学留言 你的js主要是用什
  • SQL Server(2019)数据库----数据查询(数据库系统概论第五版)

    目录 一 课本例题查询 1 查询全体学生的姓名及其出生年份 2 查询全体学生的姓名 出生年份和所在的院系 要求用小写字母表示系名 3 查询选修了课程的学生学号 4 查询不是数学系 计算机系学生的姓名和性别 5 查询选修了3号课程的学生的学号
  • Redis面试题(四)

    文章目录 前言 一 锁互斥机制 二 watch dog 自动延期机制 三 可重入加锁机制 四 释放锁机制 五 上述 Redis 分布式锁的缺点 六 使用过 Redis 分布式锁么 它是怎么实现的 总结 前言 锁互斥机制 watch dog
  • QT中信号与槽的连接

    本文章主要通过代码的形式讲解QT中connect函数对于信号和槽函数的连接 include mainwindow h include ui mainwindow h include