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

h5企业模板网站模板下载nginx wordpress 配置

h5企业模板网站模板下载,nginx wordpress 配置,哪个平台查企业免费,网站的网络推广目录 信号槽 1. 概念 2. 函数原型 3. 连接方式 3.1 自带信号 → 自带槽 3.2 自带信号 → 自定义槽 3.3 自定义信号 4. 信号槽传参 5. 对应关系 5.1 一对多 5.2 多对一 信号槽 1. 概念 之前的程序界面只能看#xff0c;不能交互#xff0c;信号槽可以让界面进行人机…目录 信号槽 1. 概念 2. 函数原型 3. 连接方式 3.1 自带信号 → 自带槽 3.2 自带信号 → 自定义槽 3.3 自定义信号 4. 信号槽传参 5. 对应关系 5.1 一对多 5.2 多对一 信号槽 1. 概念     之前的程序界面只能看不能交互信号槽可以让界面进行人机交互。     信号槽是Qt在C基础上新增的特性类似于其他编程中的回调机制其目的是实现对象之间的通信。 使用信号槽需要具备两个先决条件 通信的对象必须继承自QObject QObject是Qt所有对象的基类内部规定了Qt最基础的对象特性。 类中要包含Q_OBJECT宏 2. 函数原型 信号槽的建立是通过connect函数实现的。 // 信号槽连接函数 // 参数1发射者因发起的对象n. // 参数2信号函数因的动作v.需要使用SIGNAL()包裹函数名称 // 参数3接收者果执行的对象n. // 参数4槽函数果的动作v.需要使用SLOT()包裹函数名称 QObject::​connect(const QObject * sender, const char * signal, const QObject * receiver, const char * slot) [static] 信号函数一定来自于发射者槽函数一定来自于接收者。信号槽的连接必须在发射者对象和接收者对象创建完成后进行如果成功连接后发射者或接收者对象销毁了连接断开。     信号槽的连接也可以程序员手动断开只需要把connect函数改为disconnect即可参数保持不变。 3. 连接方式 为了讲课按照难易程度分为三种连接方式 自带信号 → 自带槽自带信号 → 自定义槽自定义信号 → 槽 3.1 自带信号 → 自带槽     这种连接方式是最简单的连接方式因为信号函数和槽函数都是Qt内置的程序员只需要找到连接的四个参数直接连接即可。 【例子】点击按钮关闭窗口。 分析 参数1发射者——按钮对象 参数2信号函数——点击 void QAbstractButton::​clicked() [signals] 参数3接收者——窗口对象 参数4槽函数——关闭 bool QWidget::​close() [slot] dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialog #include QPushButtonclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent 0);~Dialog();private:QPushButton *btn; };#endif // DIALOG_Hdialog.cpp #include dialog.hDialog::Dialog(QWidget *parent): QDialog(parent) {resize(400,400);btn new QPushButton(关闭,this);btn-move(100,100);// 参数1发射者——按钮对象// 参数2信号函数——点击// 参数3接收者——窗口对象// 参数4槽函数——关闭connect(btn,SIGNAL(clicked()),this,SLOT(close())); }Dialog::~Dialog() {delete btn; }3.2 自带信号 → 自定义槽     这种连接方式是使用的最多的一种连接方式因为在实际开发中Qt无法预设所有的槽函数情况对于复杂的操作执行逻辑需要程序员手动编写槽函数。 槽函数是一种特殊的成员函数。 【例子】点击按钮窗口向右下角移动10个像素并且后台输出当前窗口的位置。 dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialog #include QPushButton #include QDebugclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent 0);~Dialog();private:QPushButton *btn;// 槽函数的声明 private slots: // 最小权限原则void mySlot(); // 自定义槽函数 };#endif // DIALOG_Hdialog.cpp #include dialog.hDialog::Dialog(QWidget *parent): QDialog(parent) {resize(400,400);btn new QPushButton(关闭,this);btn-move(100,100);// 连接信号槽connect(btn,SIGNAL(clicked()),this,SLOT(mySlot())); }void Dialog::mySlot() {// 先获得当前坐标int x this-x();int y this-y();// 移动move(x10,y10);// 输出当前窗口位置qDebug() this-x() this-y(); }Dialog::~Dialog() {delete btn; }3.3 自定义信号     自定义信号通常用于解决一些对象之间“远距离”通信问题本节属于强行使用因此并不是问题最优解只是为了展示自定义信号的使用方式。 【例子】点击按钮按钮上显示点击的次数。 先忽略自定义信号展示正常解法 dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialog #include QPushButton #include QDebugclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent 0);~Dialog();private:QPushButton* btn;int count;private slots:void btnClickedSlot(); // 点击按钮的槽函数 };#endif // DIALOG_Hdialog.cpp #include dialog.hDialog::Dialog(QWidget *parent): QDialog(parent),count(0) // 构造初始化列表 {resize(400,400);btn new QPushButton(0,this);btn-move(200,200);connect(btn,SIGNAL(clicked()),this,SLOT(btnClickedSlot())); }void Dialog::btnClickedSlot() {count;// int → QStringQString text QString::number(count);// 设置到按钮上显示btn-setText(text); }Dialog::~Dialog() {delete btn; }基于上面的解法强行增加自定义信号发射环节      信号函数是一种特殊的函数只有声明没有定义声明后可以直接配合emit关键字发射。 dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialog #include QPushButton #include QDebugclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent 0);~Dialog();private:QPushButton* btn;int count;signals:void countSignal(); // 自定义信号private slots:void btnClickedSlot(); // 点击按钮的槽函数void countSlot(); // 与自定义信号连接的槽函数 };#endif // DIALOG_Hdialog.cpp #include dialog.hDialog::Dialog(QWidget *parent): QDialog(parent),count(0) // 构造初始化列表 {resize(400,400);btn new QPushButton(0,this);btn-move(200,200);connect(btn,SIGNAL(clicked()),this,SLOT(btnClickedSlot()));connect(this,SIGNAL(countSignal()),this,SLOT(countSlot())); }void Dialog::btnClickedSlot() {count;// 发射自定义信号emit countSignal(); }/*** brief Dialog::countSlot* 中转之后更新按钮显示的槽函数*/ void Dialog::countSlot() {QString text QString::number(count);btn-setText(text); }Dialog::~Dialog() {delete btn; }4. 信号槽传参     信号槽可以进行参数传递信号函数携带参数发射槽函数可以收到此参数。 dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialog #include QPushButton #include QDebugclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent 0);~Dialog();private:QPushButton* btn;int count;signals:void countSignal(int); // 自定义信号private slots:void btnClickedSlot(); // 点击按钮的槽函数void countSlot(int); // 与自定义信号连接的槽函数 };#endif // DIALOG_H dialog.cpp #include dialog.hDialog::Dialog(QWidget *parent): QDialog(parent),count(0) // 构造初始化列表 {resize(400,400);btn new QPushButton(0,this);btn-move(200,200);connect(btn,SIGNAL(clicked()),this,SLOT(btnClickedSlot()));connect(this,SIGNAL(countSignal(int)),this,SLOT(countSlot(int))); }void Dialog::btnClickedSlot() {count;// 发射自定义信号(携带参数)emit countSignal(count); }/*** brief Dialog::countSlot* count参数是信号函数发来的不是成员变量* 中转之后更新按钮显示的槽函数*/ void Dialog::countSlot(int count) {QString text QString::number(count);btn-setText(text); }Dialog::~Dialog() {delete btn; }需要注意的是 理论上可以传递任意多个参数信号函数的参数个数必须大于等于槽函数的参数个数参数类型需要匹配 5. 对应关系     同一个信号可以连接到多个槽一对多多个信号也可以连接到同一个槽多对一。 5.1 一对多     槽函数也是成员函数因此在一对多的连接关系中把连接的多个槽函数可以看做是普通的成员函数合并为一个槽函数。 dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialog #include QPushButton #include QDebugclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent 0);~Dialog();private:QPushButton* btn1;QPushButton* btn2;private slots:void btnClickedSlot1();void btnClickedSlot2();void btnClickedSlot3(); // 3 1 2 };#endif // DIALOG_Hdialog.cpp #include dialog.hDialog::Dialog(QWidget *parent): QDialog(parent) {resize(400,400);btn1 new QPushButton(一对多, this);btn1-move(200,100);btn2 new QPushButton(一对一, this);btn2-move(100,200);// 一对多connect(btn1,SIGNAL(clicked()),this,SLOT(btnClickedSlot1()));connect(btn1,SIGNAL(clicked()),this,SLOT(btnClickedSlot2()));// 一对一connect(btn2,SIGNAL(clicked()),this,SLOT(btnClickedSlot3())); }void Dialog::btnClickedSlot1() {qDebug() A; }void Dialog::btnClickedSlot2() {qDebug() B; }void Dialog::btnClickedSlot3() {// 直接把Slot1和Slot2两个函数当做普通的成员函数// 使用this指针调用btnClickedSlot1();btnClickedSlot2(); }Dialog::~Dialog() {delete btn1; }5.2 多对一     多对一的连接方式下槽函数无法区分信号来源可以在槽函数中调用sender函数获取发射者对象从而判断信号来源。 // 在槽函数中调用返回发射者对象 QObject * QObject::​sender() const dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialog #include QPushButton #include QDebugclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent 0);~Dialog();private:QPushButton* btn1;QPushButton* btn2;private slots:void btnsClickedSlot(); };#endif // DIALOG_Hdialog.cpp #include dialog.hDialog::Dialog(QWidget *parent): QDialog(parent) {resize(400,400);btn1 new QPushButton(A,this);btn2 new QPushButton(B,this);btn1-move(150,100);btn2-move(150,200);// 多对一connect(btn1,SIGNAL(clicked()),this,SLOT(btnsClickedSlot()));connect(btn2,SIGNAL(clicked()),this,SLOT(btnsClickedSlot())); }void Dialog::btnsClickedSlot() {if(btn1 sender()){qDebug() 点击了按钮1;}else if(btn2 sender()){qDebug() 点击了按钮2;}qDebug() 槽函数触发; }Dialog::~Dialog() {delete btn1;delete btn2; }
http://www.hkea.cn/news/14560721/

相关文章:

  • 做营销型网站 公司一般网站建设都用什么字体
  • 网站icon怎么设置微信网站怎么收款
  • 个人备案号 可以做游戏网站吗网上售卖平台有哪些
  • 网站开发与网页制作的区别wordpress 安装ftp
  • 视频网站开发技术书企业如何进行搜索引擎优化
  • 高碑店建设局网站桂林网站制作网站
  • 深做网站公司网络推广是做什么工作的
  • 旅游网站总结医院科室网站建设
  • 快手淘客网站是怎么做的网站建设 爱诚科技
  • 电子商务网站建设风格城乡建设部统计网站
  • 镇江手机网站制作广告公司的电话
  • 学校网站建设需求分析调研表石家庄网络公司查封
  • 卡片式设计网站图库素材网站模板
  • 自己建设网站用哪个黄山网站设计
  • 营销网站首页设计创建商城app
  • 局域网如何建网站怎样用php做网站
  • 网站模板批量下载php网站开发优化
  • 观山湖制作网站做综合类网站好不好
  • 网站建设论文html格式wordpress的页脚模板修改就出错
  • 成熟网站开发单位国际军事新闻最新消息
  • 建立网站心得商务网站建设教学视频
  • 推广网站建设产品介绍wordpress美文主题
  • 兰州网站排名公司phpstorm做网站
  • 怎样选择网站建设做出口贸易用什么平台
  • 网站建设设计书任务书wordpress清理网站缓存
  • 大兴网站开发网站建设价格网站开发服务费计入哪个科目
  • 制作自己的网站需要什么软件好wordpress上下篇
  • 有个专门做gif的网站上海传媒公司介绍
  • 网站开发研究总结一级消防工程师考试资料
  • 网站打开太慢什么原因android最新版本