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

烟台专业网站建设公司网站安全体系建设方案

烟台专业网站建设公司,网站安全体系建设方案,深圳网上办事大厅官网,网站建设与维护里面的个人简历Qt的元对象系统基于如下三件事情#xff1a; 1.类#xff1a;QObject#xff0c;为所有需要利用原对象系统的对象提供了一个基类。 2.宏#xff1a;Q_OBJECT#xff0c;通常可以声明在类的私有段中#xff0c;让该类可以使用元对象的特性#xff0c;比如动态属性#x…Qt的元对象系统基于如下三件事情   1.类QObject为所有需要利用原对象系统的对象提供了一个基类。 2.宏Q_OBJECT通常可以声明在类的私有段中让该类可以使用元对象的特性比如动态属性信号和槽。 3.编译器元对象编译器moc为每个QObject子对象自动生成必要的代码来实现元对象特性。 moc工具会读入C的源文件如果它发现了一个或者多个声明了Q_OBJECT宏的类它就创建另一个C源文件为每个类生成包含元对象实现的代码。这些编译生成的源文件通常都已经被包含到类的源文件中或者和类的实现同时被编译和链接。   除了为对象间的通信提供信号和槽signals and slots机制之外元对象的代码还提供下列特性 ·QObject::metaObject()返回与该类绑定的meta-object对象。 ·QMetaObject::className()可以在运行时以字符串的形式返回类的名字不需要C编译器原生的运行时类型信息RTTI的支持。 ·QObject::inherits()函数返回继承信息对象是否是QObject继承树上一个类的实例。 ·QObject::tr()和QObject::trUtf8()提供国际化支持将字符串翻译成指定的语言。 ·QObject::setProperty()和QObject::property()通过名字动态设置和获取对象属性。 ·QMetaObject::newInstance()构造该类的一个新实例。 除此之外你还可以用qobject_cast()动态转换QObject类的类型。qobject_cast()函数和标准C的dynamic_cast()功能类似只是其不需要RTTI的支持而且可以跨越动态连接库的边界。它尝试将它的参数cast成尖括号内的对象类型如果对象是正确的类型运行时决定则返回非零否则返回0说明对象类型不兼容。 当某一个Object emit一个signal的时候它就是一个sender,系统会记录下当前是谁emit出这个signal的所以你在对应的slot里就可以通过sender()得到当前是谁invoke了你的slot对应的是QObject-d-sender。    有可能多个Object的signal会连接到同一个signal(例如多个Button可能会connect到一个slot函数onClick()),因此这是就需要判断到底是哪个Object emit了这个signal根据sender的不同来进行不同的处理。这时就要用到qobject_cast()。   例如假设MyWidget继承自QWidget同时也声明了Q_OBJECT宏           QObject *obj new MyWidget; QObject类型的变量obj实际上指向一个MyWidget对象因此我们可以这样进行类型转换           QWidget *widget qobject_castQWidget *(obj); 到MyWidget的转型可以成功是因为qobject_cast()并没有对Qt内建对象和定制的扩展对象分别对待。           QLabel *label qobject_castQLabel *(obj);     // label is 0 另一方面到QLabel的转型则会失败指针会被设置为0。这样使得我们可以在运行时根据对象类型对不同类型的对象进行不同的处理    if (QLabel *label qobject_castQLabel *(obj)) {       label-setText(tr(Ping));   }  else  if (QPushButton *button qobject_castQPushButton *(obj)) {      button-setText(tr(Pong!));   } 尽管我们可以在不用Q_OBJECT宏和原对象信息的情况下仍旧使用QObject作为基类但是像信号和槽以及其他这里描述的特性将无法使用。从元对象系统的观点来看一个没有元对象代码的QObject子类和其最接近的有元对象代码的祖先是等同的。这也就意味着QMetaObject::className()将不会返回你的类的真实的名字而是该类某一个祖先的名字。 因此我们强烈建议所QObject的子类都是用Q_OBJECT宏不管你实际上是否使用信号和槽以及属性。   例子 connect(pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked())); connect(pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked())); void MainWindow::on_pushButton_clicked() {  QPushButton*ptqobject_cast QPushButton*(sender()); if(!pt) return;   QString str; if (pt pushButton)         str1; else  if (pt pushButton_2)          str2;   } 转载于:https://www.cnblogs.com/qq78292959/archive/2012/08/20/2648099.html
http://www.yutouwan.com/news/223801/

相关文章:

  • 装修公司网站设计查询网站服务器提供商
  • 无锡中小企业网站建设wordpress配置网站
  • 奉贤专业做网站西安做网站哪里好
  • 济南网站制作价格兰州最新消息今天又封了
  • 做网站之前要怎样准备图片全网门户网站制做
  • 修改网站照片需要怎么做wordpress主题下载失败
  • 电商网站的流程图品牌网站制作简创网络
  • 域名访问网站的知识阿里云 安装 wordpress
  • 黑龙江省住房和城乡建设厅网站拓元建设网站
  • 长沙民政计算机网站建设域名续费做网站
  • 怎么登陆建设u盾网站短视频营销概念
  • google提交网站wordpress胖鼠采集
  • 专门做狗猫配套网站有什么意思孟村县做网站
  • 怎么申请一个免费的网站商城型网站建设
  • 网站开发岗位分析网站源码交易平台代码
  • dede免费手机网站模板网页开发兼职
  • 辽宁网站推广广东省建设监理协会网站 首页
  • 普通电脑可以做网站服务器吗上海外贸新三样出口超2400亿元
  • 成品软件源码网站服装设计自学
  • 更合网站设计制作1688黄页网品种大全2021
  • 怎样下载模板做网站h5网站开发方案
  • 网页设计网站思路知乎 阿里云 wordpress
  • 网站怎么引蜘蛛网站建设管理制度
  • 怎么使用织梦做网站深圳网站建设哪里
  • 网站备案管理系统网站婚恋网站做期货现货贵金属的人
  • 向自己做网站企业vi设计公司有哪些
  • 梅州建站哪里好动漫设计与制作软件下载
  • 新网站域名备案流程国外网站建设软件有哪些方面
  • 网站建设首页群晖建站教程
  • 网站主页布局建设银行网站点不了