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

做美容美发学校网站公司建设网站协议

做美容美发学校网站公司,建设网站协议,解析域名,上传wordpress后无法安装QT信号和槽与自定义的信号和槽 1.概述 这篇文章介绍下QT信号和槽的入门知识#xff0c;通过一个案例介绍如何创建信号和槽#xff0c;并调用他们。 2.信号和槽使用 下面通过点击按钮关闭窗口的案例介绍如何使用信号和槽。 创建按钮 在widget.cpp文件中创建按钮代码如下 …QT信号和槽与自定义的信号和槽 1.概述 这篇文章介绍下QT信号和槽的入门知识通过一个案例介绍如何创建信号和槽并调用他们。 2.信号和槽使用 下面通过点击按钮关闭窗口的案例介绍如何使用信号和槽。 创建按钮 在widget.cpp文件中创建按钮代码如下 #include mywidget.h #include QPushButtonWidget::Widget(QWidget *parent): QWidget(parent) {// 第二种创建按钮方式QPushButton *btn2 new QPushButton(构造按钮,this);使用信号和槽实现点击按钮关闭窗口 使用QObject类中的connect函数连接信号和槽该函数需要4个参数 参数1 发送者谁发送信号——btn2参数2 发送的是什么信号信号用函数地址——QPushButton::clicked参数3 接受者谁来接受信号——this指的是当前窗口对象参数4 槽接受者做出的动作——QWidget::close connect(btn2, QPushButton::clicked, this, QWidget::close);3.如何查看QT提供的信号和槽函数 在使用connect连接信号和槽的时候第一个参数发送者是btn2按钮对象属于QPushButton类。 如何查看系统提供的信号 第二个参数需要知道发送什么信号这个时候怎么知道QPushButton提供了哪些信号那这就需要查看QT帮助文档。 首先在编辑器中点击HELP 打开帮助文档输入QPush查看QPushButton中提供的内容没有Signal 信号。 接着查看QPushButton父类 在父类中看到有Signals 信号点击它跳转到信号介绍位置。 在信号介绍中给出了所有的信号我们选择第一个就是我们示例中的点击信号。在使用这个信号函数时候一定要用地址引用方式调用它就是在调用前加上符号。 connect(btn2, QPushButton::clicked, this, QWidget::close);如何查看系统提供的槽 查看方法和上面查看信号一样我们是关闭窗口窗口的类是QWidge 查看它的槽中提供了close() 函数。 connect(btn2, QPushButton::clicked, this, QWidget::close);3.自定义信号和槽功能 上面介绍的是使用QT提供的信号和槽下面通过一个实例介绍如何自定义自己的信号和槽的功能。 示例功能描述 老师类发出一个下课的信号学生类的槽执行请客吃饭 新建项目 首先新建一个QWidge类型项目然后在项目名称上右键新建clss文件名称输入 Teacher 。然后再新建另一个class文件名称输入Student。 2. 创建信号 在teacher.h文件中创建信号 信号只需要定义不需要实现。 #ifndef TEACHER_H #define TEACHER_H#include QObjectclass Teacher : public QObject {Q_OBJECT public:explicit Teacher(QObject *parent nullptr);signals:/* 自定义信号写到signals中* 返回值是void只需要声明不需要实现* 可以有参数可以重载*/void hungry();};#endif // TEACHER_H 创造槽 在student.h文件中创建槽函数槽函数声明后需要在student.cpp文件中实现功能。 #ifndef STUDENT_H #define STUDENT_H#include QObjectclass Student : public QObject {Q_OBJECT public:explicit Student(QObject *parent nullptr);signals:public slots:/* 早起QT版本必须写到public slots 高级版本可以写到public或者全局中* 返回值void 需要声明并且实现* 可以有参数可以重载 */void treat();};#endif // STUDENT_H 在student.cpp文件中实现功能 #include student.h #include QDebugStudent::Student(QObject *parent) : QObject(parent) {}void Student::treat() {qDebug() 执行槽函数请客吃饭; } 连接信号和槽 在QWidget.h 文件中创建Teacher和Student类对象创建一个触发下课的函数。 #ifndef WIDGET_H #define WIDGET_H#include QWidget #include teacher.h #include student.hQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget(); // 创建Teacher和Student类对象Teacher *tc;Student *st;private:Ui::Widget *ui; // 创建一个触发下课的函数void classIsDown(); }; #endif // WIDGET_H 在QWidget.cpp 文件中实现信号和槽的功能 #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 1.创建对象this-tc new Teacher(this);this-st new Student(this); // 2.连接信号和槽connect(tc, Teacher::hungry, st, Student::treat); // 3.调用触发下课函数classIsDown(); }//4.下课函数使用emit发送信号 void Widget::classIsDown() {emit tc-hungry(); } Widget::~Widget() {delete ui; } 4.信号和槽函数重载 当我们自定义信号和槽函数时他们可以通过参数进行重载实现更多的功能。当使用重载时调用的时候需要使用函数指针指向函数地址确认调用哪个重载的函数。 继续使用上面的示例在Teacher和Student类中添加重载的信号和槽 添加重载的信号 在teacher.h文件中新增void hungry(QString foodName); 有参的信号 #ifndef TEACHER_H #define TEACHER_H#include QObjectclass Teacher : public QObject {Q_OBJECT public:explicit Teacher(QObject *parent nullptr);signals:/* 自定义信号写到signals中* 返回值是void只需要声明不需要实现* 可以有参数可以重载*/void hungry(); // 信号参数重载void hungry(QString foodName);};#endif // TEACHER_H 添加重载的槽 在student.h文件中添加void treat(QString foodName); 槽函数 #ifndef STUDENT_H #define STUDENT_H#include QObjectclass Student : public QObject {Q_OBJECT public:explicit Student(QObject *parent nullptr);signals:public slots:/* 早起QT版本必须写到public slots 高级版本可以写到public或者全局中* 返回值void 需要声明并且实现* 可以有参数可以重载 */void treat();// 槽参数重载void treat(QString foodName);};#endif // STUDENT_H 在student.cpp文件中实现槽函数功能 #include student.h #include QDebugStudent::Student(QObject *parent) : QObject(parent) {}void Student::treat() {qDebug() 执行槽函数请客吃饭; }void Student::treat(QString foodName) {qDebug() 执行参数重载的槽函数吃 foodName.toUtf8().data(); } 调用重载的信号和槽函数 在widget.cpp文件中通过connect()函数调用信号和槽之前需要先指明调用的是有参的信号和槽函数方法如下 // 调用有参的信号和槽 // 1.声明一个函数指针指向函数地址void(Teacher::*teacherSignal) (QString) Teacher::hungry;void(Student::*studentSlot)(QString) Student::treat; // 2.连接信号和槽connect(tc, teacherSignal, st, studentSlot);完整代码 #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 1.创建对象this-tc new Teacher(this);this-st new Student(this); // 2.连接信号和槽 // connect(tc, Teacher::hungry, st, Student::treat); // 3.调用触发下课函数 // classIsDown();// 调用有参的信号和槽 // 1.声明一个函数指针指向函数地址void(Teacher::*teacherSignal) (QString) Teacher::hungry;void(Student::*studentSlot)(QString) Student::treat; // 2.连接信号和槽connect(tc, teacherSignal, st, studentSlot); // 3.调用触发下课函数classIsDown(); }//4.下课函数使用emit发送信号 void Widget::classIsDown() { // 调用无参信号 // emit tc-hungry(); // 调用有参信号emit tc-hungry(糖醋里脊); } Widget::~Widget() {delete ui; } 5.信号连接信号 上面触发信号使用的是emit如果我们想实现通过点击按钮来触发信号那么可以采用普通的按钮发送信号控制槽函数还可以采用信号连接信号实现。 // 点击按钮触发下课第一种方式通过信号和槽实现。QPushButton *btn new QPushButton(下课,this);this-resize(600,400); // connect(btn, QPushButton::clicked, this, Widget::classIsDown);// 点击按钮触发下课第二种通过信号连接信号实现void(Teacher::*teacherSignal2) (void) Teacher::hungry;void(Student::*studentSlot2)(void) Student::treat;connect(tc, teacherSignal2, st, studentSlot2);// 通过一个按钮信号链接到上面Teacher的信号触发上面的信号和槽执行 // 当点击按钮时按钮发送信号给teacher的信号teacher信号被触发就会发送信号给student槽函数connect(btn, QPushButton::clicked, tc, teacherSignal2);6.断开信号 使用disconnect函数断开信号函数中的参数就是要断开链接connect里面的参数。 // 点击按钮触发下课第二种通过信号连接信号实现void(Teacher::*teacherSignal2) (void) Teacher::hungry;void(Student::*studentSlot2)(void) Student::treat;connect(tc, teacherSignal2, st, studentSlot2);// 通过一个按钮信号链接到上面Teacher的信号触发上面的信号和槽执行connect(btn, QPushButton::clicked, tc, teacherSignal2);// 断开信号disconnect(tc, teacherSignal2, st, studentSlot2);7.扩展 QT4版本信号和槽写法 // QT4版本信号和槽connect(tc,SIGNAL(hungry()), st, SLOT(treat()));
http://www.dnsts.com.cn/news/49507.html

相关文章:

  • 网站开发亿码酷技术莱芜在线和莱芜都市网
  • 受欢迎的邯郸网站建设搜索引擎最新排名
  • 养殖网站 模板海外 推广网站
  • wordpress主题模板视频网站模板WordPress插件手动
  • 吉林智能网站建设找哪家摄影设计英文
  • 站长工具推荐seo综合查询大宗商品价格查询网站
  • 排版设计的网站企业官网与公开财报
  • 邯郸建网站江苏网络推广排名
  • 自己做家具展示网站西双版纳住房和城乡建设局网站
  • 公众号做图网站网站 开发 文档
  • 北京网站建设收费如何 申请个人网站
  • 网站备案人的法律风险wordpress主题添加设置选项
  • 如何做一个单页的网站html5网站图标
  • 成都学网站建设管理手机网站模板
  • 如何做网站的视频网站开发流程
  • 两学一做 网站源码全屏网站是什么意思
  • 做网站如何适应分辨率如何查询网站备案进度查询
  • 滕州手机网站建设案例海南公司注册网站
  • 网站服务器提供商公司网站域名申请流程
  • 网站建设手机端是什么意思重庆中心城区恢复
  • 公众号后端框架辽源网站seo
  • 南京专业网站优化公司html编辑器手机
  • 郑州做网站软件外文网站制作
  • 网站开发用什么简单做网站客户改来改去
  • 前端网站做中 英文怎么说简单html网页代码完整示范
  • 网站程序合同好听的公司名字大全
  • 东莞设计网站企业设计师在线接单
  • 网站开发以图片为背景平面设计素材免费下载
  • 台州网站制作定制网络编程
  • 营销网站主题有哪些开发公司直接发包绿化景观