Qt中的信号和槽函数。

1:写一个close按钮当单击此按钮时就执行槽函数,而关闭窗口.

 1 #include "slot.h"
 2 #include <QApplication>
 3 #include<QPushButton>
 4 #include<time.h>
 5 #ifndef SLOT_H
 6 #define SLOT_H
 7 #include <QMainWindow>
 8 #include <QObject>
 9 #include <QWidget>
10 class Slot : public QWidget
11 {
12     Q_OBJECT
13 public:
14     explicit Slot(QWidget *parent = nullptr);
15     Slot(const Slot &);
16     Slot &operator=(const Slot &);
17     ~Slot();
19 signals:
21 public slots:
23 private:
24     QSharedDataPointer<SlotData> data;
25 };
26 class SlotData : public QSharedData
27 {
28 public:
30 };
31 Slot::Slot(QWidget *parent) : QWidget(parent), data(new SlotData) //Slot的构造函数.
32 {
33 QPushButton *btn = new QPushButton; //new关键字是c++动态分配那一节讲的。
34 btn->setParent(this); //this代表QWidget对象.
35 btn->setText("close");
36 QPushButton *btn1;
37 connect(&btn,&QPushButton::pressed,this,&Slot::close);
38 /*
39  * &btn:  信号发出者.
40  * &QPushButton::pressed:  指明btn在遇到用户给的presses的信号时才给this(Slot类的对象)发出信号让this执行槽函数。
41  * this:  信号的承受者也就是被执行者。
42  * close:为槽函数,
43  */
44 /*
45  * 自定义信号和槽,普通函数的用法
46  * Qt:任意的成员函数,普通全局函数,静态函数.
47  * 槽函数需要和信号一致(参数,返回值)
48  * 由于信号都是没有返回值,使用槽函数一定没有返回值.
49  *
50 */
51 }
52 Slot::~Slot()  //Slot的析构函数.
53 {
55 }

原文地址:https://www.cnblogs.com/1314bjwg/p/12269819.html

时间: 2024-10-06 14:02:52

Qt中的信号和槽函数。的相关文章

Qt中使用信号和槽的一点心得

信号(Signal)与槽(Slot)-Qt中的典型机制 这一篇文章中都说得很详细了,这里不再重复,只说一点在实际使用中可能会遇到的问题. 1.一个信号不要同时连接几个槽函数,不然执行的顺序是随机的,最后的结果可能会和自己期待的有出入. 2.基本上,所有的信号连接槽函数之后,会执行完当前连接的槽函数,然后再执行emit信号之后的内容.但是也会有意外的情况发生:如果当前信号里面要执行的内容过于复杂(e.g.slots中又包含emit信号,本身slots函数又比较复杂等等),会导致线程之间的混乱,可能

PyQt5中的信号与槽,js 与 Qt 对象之间互相调用

一.PyQt中的信号与槽 信号(Signal)和槽(Slot)是Qt中的核心机制,用在对象之间互相通信.在Qt中每个QObject对象和PyQt中所有继承自QWidget的控件(这些都是QObject的子对象)都支持信号与槽机制.当信号发射时,连接的槽函数将会执行.在PyQt5中信号与槽通过object.signal.connect()方法连接. 1.1 关于信号和槽的常识 Qt 提供了信号可以使用,当然你也可以QtCore.pySignal()来自定义信号 一个信号可以连接多个槽: 一个信号也

qt自定义信号和槽函数 emit

一.自定义信号 关键字:signals signals  : void ageChanged(int age); //虽然是一个函数,但是无需实现,参数age会传递到槽函数 二.信号和槽函数的关联 connect(boy,&Person::ageChanged,this,&Person::on_ageChanged); 三.发射信号 关键字:emit emit ageChanged(age);  //当年龄age改变时发射信号,让执行槽函数 四.槽函数 void Person::on_ag

第78课 多线程中的信号与槽(上)

1. QThread类中的信号和槽 (1)QThread类拥有发射信号和定义槽函数的能力 (2)QThread中的关键信号 ①void started():线程开始运行时发射该信号 ②void finished():线程完成运行时发射该信号 ③void terminated():线程被异常终止时发射该信号 2. 与线程相关的概念 (1)线程栈 ①进程中存在栈空间的概念(区别于栈数据结构) ②栈空间专用于函数调用(保存函数参数.局部变量等) ③线程拥有独立的栈空间(可调用其它函数) ④只要函数体中

Qt::ConnectionType(信号与槽的传递方式)

Qt::AutoConnection 自动连接:(默认值)如果信号在接收者所依附的线程内发射,则等同于直接连接.如果发射信号的线程和接受者所依附的线程不同,则等同于队列连接. Qt::DirectConnection 直接连接:当信号发射时,槽函数将直接被调用.无论槽函数所属对象在哪个线程,槽函数都在发射信号的线程内执行. Qt::QueuedConnection 队列连接:当控制权回到接受者所依附线程的事件循环时,槽函数被调用.槽函数在接收者所依附线程执行.也就是说:这种方式既可以在线程内传递

如何在VS2013+QT5.3环境下使用自定义信号与槽函数

图1中标注出来的是VS2013中的QT界面设计师文件,双击默认打开的是Qt设计师工具. 在界面上面拉入一个PushButton,点击编辑信号与槽按钮进入编辑模式. 选择信号clicked(),发现可以从QWidget继承很多槽函数,暂时先选择close()槽函数,点OK 保存后,VS2013中有个文件“ui_testqt.h”会自动生成信号与槽的代码.此文件也是生成界面文件的源代码. 目前都是使用的默认的信号与槽函数,如果想触发自定义的槽函数呢?我们会想到可以直接修改ui_testqt.h里面的

4自定义信号和槽函数

自定义信号和槽 信号和槽的本质都是函数. 区别: 信号必须由signal关键字来声明 信号可以重载 信号没有返回值,但可以有参数.由于信号都是没有返回值,所以,槽函数一定没有返回值 信号就是函数的声明,只需声明,无需定义.槽既要函数声明也要完成定义. 使用方式:emit MySignal(); 例子说明:本例创建两个独立的窗口,分别在窗口中放置一个按钮,由此来进行两个窗口的切换.如:"切换到子窗口",即子窗口显示,主窗口隐藏.反之亦然. 按照之前的方式创建程序,另外在项目中"

QT学习之信号和槽

摘要:在QT中,我们可以使用系统提供的函数实现信号和槽的链接,但是在QT中不仅仅如此,还可以让用户自己定义信号和槽函数.在本文中,我将在自己定义的teacher类下定义信号函数hungry,然后在自己定义的student类下定义槽函数treat,最后在wedget类下将两个函数进行链接.触发.显示. 1.teacher类 有信号函数,本例中就是hungry,有参数和没有参数的,其中有参数的函数中的参数代表要传递的内容 头文件: 1 #ifndef TEACHER_H 2 #define TEAC

第五篇 -- 为组件的内建信号编写槽函数

学习书籍<Python Qt GUI与数据可视化编程> 上一节学习的是内部自带的槽函数,这一节学习自己为组件编写槽函数. 回忆一下上一节的图 我们把确定按钮绑定了accept()函数,把退出按钮绑定了close()函数.接下来,我们来看一下清空按钮. 清空: 首先在__init__()里将其绑定一个函数 self.ui.btnClear.clicked.connect(self.clear_text) 其次在myDialog类中编写clear_text()函数 def clear_text(s