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

太原网站建设培训班中国建设银行金华分行网站

太原网站建设培训班,中国建设银行金华分行网站,建立企业营销网站主要包括哪些内容,做阿里渠道的销售要有哪些网站1.QObject 只有继承了QObject类的类#xff0c;才具有信号槽的能力。所以#xff0c;为了使用信号槽#xff0c;必须继承QObject。凡是QObject类#xff08;不管是直接子类还是间接子类#xff09;#xff0c;都应该在第一行代码写上Q_OBJECT。不管是不是使用信号槽才具有信号槽的能力。所以为了使用信号槽必须继承QObject。凡是QObject类不管是直接子类还是间接子类都应该在第一行代码写上Q_OBJECT。不管是不是使用信号槽都应该添加这个宏。这个宏的展开将为我们的类提供信号槽机制、国际化机制以及 Qt 提供的不基于 C RTTI 的反射能力。因此如果你觉得你的类不需要使用信号槽就不添加这个宏就是错误的。其它很多操作都会依赖于这个宏。 示例: #include QMainWindow #include QString class A:public QObject{ public:A(QObject* parentNULL):QObject(parent){qInfo()this被构造;};~A(){qInfo()this被销毁;}; }; int main(int argc, char* argv[]){A objA;A* pA2new A(objA); //将pA2挂在到objA下A* pA3 new A(pA2);objA.dumpObjectTree(); }这样子就会形成一个树结构。 QObject:: A     QObject:: pA2         QObject:: pA3 2.事件与信号 GUI应用程序都由事件驱动事件主要由应用程序的用户生成例如点击按钮控件。或者由其他接触发生如:Internet连接,窗口管理器或计时器。当调用exec方法时应用程序进入主循环。主循环将获取事件并发送到对象。 信号与槽  信号和槽用于对象之间的通信。 //signal1调用到obj2的slot1 connect(Object1,signal1,Object2,slot1);//signal1调用到obj3的slot1 connect(Object1,signal1,Object3,slot1);slot是普通的C函数当与之相连的信号发出时将调用。 连接信号和插槽的方式: 1.成员函数指针 connect(senderPtr,QObject::destoryed,this,MyObject::objectDestroyed); 2.仿函数或lambda表达式作为slot connect(sender,QObject::destoryed,this,[](){this-m_object.remove(sender);});  学习示例: 头文件 #ifndef MYHEAD1_H_ #define MYHEAD1_H_ #include QCoreApplication #include QDebug class Sender : public QObject {Q_OBJECT public:explicit Sender(QObject* parent nullptr);private:int m_age 10;public:void incAge(); signals:// 信号函数无需定义只需声明并且不能有返回参数但可以有输入参数void ageChanged(int value); };class Receiver : public QObject {Q_OBJECT public:explicit Receiver(QObject* parent nullptr); public slots://槽函数为普通函数需要定义但也不能有返回值void ageChange(int age); }; #endif // MYHEAD1_H_在main函数中调用: #include myhead1.h int main(int argc, char* argv[]) {Sender senderObj;senderObj.incAge();Receiver recriverObj;//传递信号,通过指针的方式传递QObject::connect(senderObj,Sender::ageChanged,recriverObj,Receiver::ageChange);//建立连接后每次emit发送信号都会传递给reciver然后调用ageChangesenderObj.incAge();senderObj.incAge();//断开连接 QObject::disconnect(senderObj,Sender::ageChanged,recriverObj,Receiver::ageChange);senderObj.incAge();return 0; }当建立连接后每次emit发送信号后都会执行相应的槽(slots)而段凯连接后则不会继续调用槽。 3.鼠标键盘响应 在MainWindow构造函数中注册事件在触发时让其发出信号调用对应处理槽. 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include QMainWindowQT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();// QWidget interface protected:void keyPressEvent(QKeyEvent *event);void mouseMoveEvent(QMouseEvent *event); }; #endif // MAINWINDOW_H实现文件 #include mainwindow.h#include QtWidgets MainWindow::MainWindow(QWidget* parent): QMainWindow(parent) {// 开启鼠标跟踪setMouseTracking(true);// 创建一个按钮对象,入参为按钮显示名字和操作对象auto* quitBtn new QPushButton(Quit, this);// 设置按钮位置和大小quitBtn-setGeometry(50, 25, 100, 50);// 创建连接当按钮点击事件出发时调用循环的退出函数connect(quitBtn, QPushButton::clicked, qApp, QApplication::quit); }MainWindow::~MainWindow() { }void MainWindow::keyPressEvent(QKeyEvent* event) {// 如果当前按键事件是esc键则退出程序if (event-key() Qt::Key_Escape)qApp-quit(); }void MainWindow::mouseMoveEvent(QMouseEvent* event) {// 获取当前鼠标X坐标int x event-pos().x();// 获取y坐标int y event-pos().y();QString text 坐标: QString::number(x) , QString::number(y);this-statusBar()-showMessage(text); }在其中使用new QPushButton创建了一个按钮并且在按钮中显示了文字同时使用按钮中的方法来指定按钮的位置和大小(按照x,y轴来判断位置和创建按钮大小的).最后通过指针绑定按钮的点击事件当按钮被按下时触发QPushButton::clicked然后调用槽QApplication::quit用来退出程序。 其余的键盘检测按键和鼠标位置是通过重写QMainWindow类中的抽象函数来实现当在窗口中检测到时会自动的进行调用. 4.控件与自定义槽 QWidget是用户界面的原子类。它接收鼠标、键盘和来自系统的其他事件并在屏幕上将它们绘制出来。每个Widget都是矩形的并按照Z-orderZ轴进行排序。一个Widget夹在它的Parent和它前面的Widget之间。 没有嵌入parent widget中的Widget称为Window。通常情况下Windows有一个Frame和标题栏当然也可以通过window flags来取消这些项。Qt中QMainWindow和QDialog的多种多样的子类是最常见的Window类型. 这就是一个定义好的QMainWindow,其布局已经是默认规定好的无法再去增加布局但是可以创建布局然后替换对应的布局,并放入组件。 头文件: #ifndef MAINWINDOW_H_ #define MAINWINDOW_H_ #include QMainWindow class QPushButton; class QLabel; class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget* parent nullptr);~MainWindow();private:QPushButton* clickBtn;QLabel* label;// QObject interface protected:void timerEvent(QTimerEvent *event);public slots:void onClick();void onCheck(int state); }; #endif // MAINWINDOW_H 实现文件: #include mainwindow.h#include QtWidgets MainWindow::MainWindow(QWidget* parent): QMainWindow(parent){// 创建一个布局QWidget* myWidget new QWidget(this);// 替换到中心布局中setCentralWidget(myWidget);// 创建按钮clickBtn new QPushButton(点击, myWidget);// 创建点击事件QCheckBox* cb new QCheckBox(Connect, myWidget);// 设置点击事件默认状态cb-setCheckState(Qt::Checked);label new QLabel(QTime::currentTime().toString(), myWidget);//横向的展示组件QHBoxLayout* hbox new QHBoxLayout(myWidget);hbox-addWidget(clickBtn);hbox-addWidget(cb);hbox-addWidget(label);startTimer(1000);// 以指针的方式传入对象和函数connect(clickBtn, QPushButton::clicked, this, MainWindow::onClick);connect(cb, QCheckBox::stateChanged, this, MainWindow::onCheck); }MainWindow::~MainWindow() { }void MainWindow::timerEvent(QTimerEvent* event) {// 标识这个形参没有用到Q_UNUSED(event);label-setText(QTime::currentTime().toString()); }void MainWindow::onClick() {// 在底部标题栏展示信息statusBar()-showMessage(按钮被点击); }void MainWindow::onCheck(int state) {statusBar()-showMessage();// 根据QCheckBox状态来执行对应函数if (state Qt::Checked)connect(clickBtn, QPushButton::clicked, this, MainWindow::onClick);elsedisconnect(clickBtn, QPushButton::clicked, this, MainWindow::onClick); }从这个程序中我们可以将组件装入到我们自己创建的widget布局中然后将该布局设置为中心布局这样就可以在中心区域展示组件了同时创建了自定义的槽当触发相应事件的时候调用了自定义槽进行响应。同时也可以根据信号的实时状态来进行连接和断开。
http://www.zqtcl.cn/news/672870/

相关文章:

  • 中山精品网站建设资讯网页设计师就业趋势
  • 网站建设哪家好 万维科技wordpress广告公司模板
  • 如何选择建网站公司网站页面html静态化
  • 建设银行网站入口网页设计培训 周末双休
  • 做企业网站建设的公司为什么企业网站不是开源系统
  • 网站客户端怎么做的做汽车脚垫版的网站
  • 做数学题挣钱的网站广西建筑特种作业证件查询官网
  • 汉字叔叔花了多少钱做网站免费原创视频素材
  • 网站开发提现功能互联网推广工作好做吗
  • 做阿里渠道的销售要有哪些网站网站评论怎么做的
  • 建设中网站如何上传图片深圳营销型网站建设设计公司
  • 建设电商网站需要多少钱家具网页设计素材
  • 物流网站html5模板网站整站开发
  • 网站随机代码网站开发技术试验教程
  • 做翻译 网站吗仿京东电商的网站开发报价
  • 霞山网站建设公司网站开发怎样手机号验证
  • 大型门户网站建设苏州优化网站建设
  • 网站步骤怎么搭建个人网站
  • 荥阳网站建设公司wordpress会员上限
  • 采购需求网站建设呼伦贝尔网站开发
  • 东莞网站建设方案服务极速网站建设定制价格
  • 网站建设费记账福州百度网络推广
  • 中国农村建设网站邵阳房产网
  • 做非法网站网站上海备案查询
  • 网站制作要学哪些北京信管局 网站备案
  • 百度新闻源网站有哪些wordpress怎么配置七牛cdn加速
  • 山东城乡住房建设厅网站wordpress 购物网站主题
  • 石家庄制作网站查网站流量查询工具
  • 信誉好的永州网站建设静态网站的短处
  • wordpress主题汉化软件河南网站优化哪家好