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

成都机械网站制作wordpress增强插件

成都机械网站制作,wordpress增强插件,关键词搜索工具好站网,建设部网站国家级工法目录文章目录 前言 一、QT信号与槽 1. 信号槽连接模型 2. 信号槽介绍 3. 自定义信号槽 二、QT的对象树 三、添加资源文件 四、样式表的使用 五、QSS文件的使用 六、常用函数与宏 前言 承接【QT5】#xff1c;总览一#xff1e; QT环境搭建、快捷键及编程规范。若存在版…文章目录 前言 一、QT信号与槽 1. 信号槽连接模型 2. 信号槽介绍 3. 自定义信号槽 二、QT的对象树 三、添加资源文件 四、样式表的使用 五、QSS文件的使用 六、常用函数与宏 前言 承接【QT5】总览一 QT环境搭建、快捷键及编程规范。若存在版权问题请联系作者删除 一、QT信号与槽 1. 信号槽连接模型 1.1 信号槽连接模型 1.2 QT中信号槽的使用方式 方式一如下图所示在ui设计器中的中下位置可以设置信号槽的四要素。下图实现了点击按钮就会关闭当前窗口的功能。 方式二如下图所示右击按钮再点击“转到槽”QT就会给MyWindow类自动在头文件中声明私有的void on_pushButton_clicked(); 同时也会转到源文件要求程序员实现点击的效果。 2. 信号槽介绍 2.1 概念 信号在特定情况下被发射的事件。例如PushButton最常见的信号就是鼠标单击时发射的click()信号。槽对信号响应的函数。槽函数与普通的函数相比不同在于槽函数与指定的信号关联当信号被发射时该槽函数会被自动执行。 2.2 信号与槽的关联 方式使用QObject::connect()函数。由于QT中所有类都是QObject的子类因此可以省去QObject其基本格式如下 //sender 是发射信号的对象的名称 //signal() 是信号名称。信号可以看做是特殊的函数需要带括号有参数时还需要指明参数 //receiver 是接收信号的对象名称 //slot() 是槽函数的名称需要带括号有参数时还需要指明参数 //SIGNAL和SLOT是Qt的宏用于指明信号和槽并将它们的参数转换为相应的字符串 connect(sender, SIGNAL(signal()), receiver, SLOT(slot())); 代码示例 /* 1.mywindow.h头文件代码 */ #ifndef MYWINDOW_H #define MYWINDOW_H #include QMainWindowQT_BEGIN_NAMESPACE namespace Ui { class MyWindow; } QT_END_NAMESPACEclass MyWindow : public QMainWindow {Q_OBJECTpublic:MyWindow(QWidget *parent nullptr);~MyWindow();private slots:void pushButton_clicked();//自定义槽函数private:Ui::MyWindow *ui; }; #endif // MYWINDOW_H/************************************************//* 2.mywindow.cpp代码 */ #include mywindow.h #include ui_mywindow.h #include QDebug//MyWindow构造函数的具体实现 MyWindow::MyWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MyWindow) {ui-setupUi(this);connect(ui-pushButton, SIGNAL(clicked()), this, SLOT(pushButton_clicked())); }//MyWindow析构函数的具体实现 MyWindow::~MyWindow() {delete ui; }//自定义槽函数的实现 void MyWindow::pushButton_clicked() {static int i;qDebug() i ; }2.3 信号与槽的解除连接 disconnect(myObject, 0, 0, 0); 断开一切与 myObject 连接的信号或槽。disconnect(myObject, SIGNAL(mySignal()), 0, 0); 断开所有连接到特定信号的东西。disconnect(myObject, 0, myReceiver, 0); 与指定的接收者断开连接。 2.4 信号槽连接规则 一个信号可以连接多个槽触发一个造成多个结果多个信号可以连接同一个槽多个触发源造成一个结果一个信号可以连接另一个信号连锁反应 3. 自定义信号槽 3.1 自定义信号的语法 //在类中使用signals关键字 //信号函数只声明不定义并且返回值为void signals:void sendMessage();//自定义信号函数 3.2 自定义槽的语法 //使用slots自定义槽 //可以使用C的三种权限符 //声明后必须给出定义 public slots:void goToClass();//自定义的槽函数//槽函数定义 void Student::goToClass() {qDebug() 学生上课 endl; } 3.3 案例 背景学校发出通知学生收到后回到班级上课。根据此情景创建School和Student类并且在School类中自定义信号“发出通知”在Student类中自定义槽“去班级”。为了简单演示我们在MainWindow类中添加School和Studen类对象作为成员变量在MainWindow的构造函数中创建对象并构建“学校-通知-学生-上课”的信号槽连接同时emit发射该信号来观察实验现象。 ①School.h: #ifndef SCHOOL_H #define SCHOOL_H#include QObjectclass School : public QObject {Q_OBJECT public:explicit School(QObject *parent nullptr);signals://自定义信号void sendMessage();//学校通知};#endif // SCHOOL_H ②Student.h: #ifndef STUDENT_H #define STUDENT_H#include QObjectclass Student : public QObject {Q_OBJECT public:explicit Student(QObject *parent nullptr);signals:public slots://自定义槽void goToClass();};#endif // STUDENT_H ③Student.cpp: #include student.h #include QDebugStudent::Student(QObject *parent) : QObject(parent) {}void Student::goToClass() {qDebug() 学生上课 endl; } ④MainWindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H#include QMainWindow #include school.h #include student.hQT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();private:Ui::MainWindow *ui;School *school;Student *student; }; #endif // MAINWINDOW_H ⑤MainWindow.cpp: #include mainwindow.h #include ui_mainwindow.hMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);school new School(this);student new Student(this);connect(school, SIGNAL(sendMessage()), student, SLOT(goToClass()));//信号与槽的连接emit school-sendMessage();//发射信号 }MainWindow::~MainWindow() {delete ui;delete school;delete student; } 二、QT的对象树 1. 为什么需要设置父对象 答因为需要将某些控件附着于父对象以便能跟着父对象一起移动方便控件的管理。 2. 如何设置父对象 答有构造函数传参和调用setparent()两种方式如下所示 //方式一构造函数传入父对象地址 pushButton new QPushButton(this); //方式二调用setParent函数 pushButton-setParent(this); 3. QT的对象树机制 答父对象在调用析构函数前会将附着于其上面所有的对象析构再调用自己的析构函数。因此可以不用显式地delete某些附着的对象QT的对象树机制会自动将其销毁。 三、添加资源文件 有时需要外部的图片等资源因此需要将资源文件添加进QT。 步骤一将资源文件放置于当前工程目录下。 步骤二添加QT Resource File 步骤三添加资源路径的目录 步骤四添加外部图片 四、样式表的使用 上一章已经加载了外部图片资源文件本章改变样式表stylesheet将该图片呈现于窗口中。若不知道如何编写样式表的代码可以去“帮助”中查找“stylesheet”查看“Qt Style Sheets Reference ”。 步骤一在ui设计器中将QLable控件拖拽至窗口中 步骤二右击该控件选中改变样式表添加图片 五、QSS文件的使用 在上一章中我们利用ui设计器来改变样式表从而加载外部图片。相应地我们可以通过写代码的方式来改变样式表从而改变某些控件的外观。但是当样式表书写过多时会影响我们代码的可读性。因此可以通过qss文件来汇总这些样式表而不需要在主程序中书写这些样式表。 原始效果在Widget类的构造函数中写这些样式表。 我们将上述的样式表代码转移到qss文件中减少主程序代码的复杂度。若不知道怎么写qss样式表可以参考Qt QSS样式表总结 步骤一新建qss文件 步骤二编辑qss文件 步骤三main()中加载qss文件 运行结果 /* 加载QSS文件 */ QFile file(:/style.qss); if (file.exists()){file.open(QFile::ReadOnly);//只读方式打开QString styleSheet QLatin1String(file.readAll());//字符串方式保存结果qApp-setStyleSheet(styleSheet);//设置全局样式file.close();//关闭文件 } 六、常用函数与宏 常用宏如下 【1】Q_OBJECT声明在private中用到了信号槽就要添加。 【2】Q_UNUSED(变量名)告诉编译器不使用某个变量。 【3】Q_CLASSINFO(key, value)给出类的相关信息。例如Q_CLASSINFO(Author, swear) //设置类的信息 Q_CLASSINFO(Author, swear) Q_CLASSINFO(version, 1.0)//循环读取类的信息需要添加相关的头文件 const QMetaObject *meta boy-metaObject(); for (int i 0; i meta-classInfoCount(); i){QMetaClassInfo classInfo meta-classInfo(i);qDebug() classInfo.name() classInfo.value(); } 【4】Q_PROPERTY(...)属性宏用于给用户设置、获取属性。若设置属性不存在时会设置动态属性。设置属性: 对象指针-setProperty(识别名, 值)。获取属性: 对象指针-property(识别名).toXxx。 //假设我们有个QPerson类类内有属性m_name, m_age, m_score //通过setProperty设置name时就会去执行setName Q_PROPERTY(QString name READ getName WRITE setName)//以下将age与属性m_age绑定之后的读取都是针对m_age Q_PROPERTY(unsigned int age MEMBER m_age) Q_PROPERTY(unsigned int score MEMBER m_score)//创建对象读写属性 QPerson p; p.setProperty(name, 王甩笼);//就会去调用setName方法 p.setProperty(age, 10);//将p内部属性m_age设置为10 qDebug() p.property(name).toString();//打印王甩笼 常用函数如下 【1】QWidget类中的update()更新界面。 【2】QWidget类中的show()显示界面。若某个界面类在实例化时没有指定父对象则需要调用该函数来显示界面。 【3】sender()在槽函数中获取发出信号的对象用指针变量接收。例如QTcpSocket *tmpTcpSocket (QTcpSocket*)sender();
http://www.w-s-a.com/news/765420/

相关文章:

  • 学做窗帘要下载哪个网站用户反馈数据分析软件园
  • 宁晋网站建设多少钱产品宣传推广方式有哪些
  • delphi做网站阿里巴巴官网首页登录入口
  • 游戏网站怎么建设新建wordpress模板
  • 网络服务器是指兰州网站seo诊断
  • 怎样做投资理财网站godaddy上传网站
  • 网站建设深圳哪家好世界500强企业招聘网站
  • 如何减少网站建设中的错误温州网站公司哪家好
  • 宜章网站建设北京定制公交网站
  • 怎么让谷歌收录我的网站郑州网站建设更好
  • 在线视频网站开发方案phpaspnet网站开发实例视频
  • 正常做一个网站多少钱网站开发所遵循
  • 西部数码网站备份领英创建公司主页
  • 中山网站建设文化平台成都电商app开发
  • 无锡网站推广公司排名中国十大网站建设
  • 网站建设报价怎么差别那么大深圳开发公司网站建设
  • 京东商城网站建设方案书建设网站平台
  • 如何查询网站建设时间赤峰建网站的电话
  • 域名购买网站有哪些公司企业邮箱管理制度
  • 阿里云服务起做网站抖音seo推荐算法
  • 免费建站工具机械网站建设公司推荐
  • 怎么用自己主机做网站_如何做简单的网站
  • 阿里巴巴国际站跨境电商平台为什么有点网站打不开
  • 甘肃做网站哪家好网站开发 都包含什么语言
  • 合肥哪里有做网站的广告型网站怎么做的
  • 用dede做的网站国外免费空间哪个好
  • dede个人网站模板企点
  • 韩雪个人网站wordpress 怎么添加网站备案信息
  • 个人网站可以做地方技能培训班
  • 品牌营销策略研究无锡 网站 seo 优化