当前位置: 首页 > 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://wiki.neutronadmin.com/news/223801/

相关文章:

  • 域名如何做网站上海哪个区买房最好
  • 门户网站建设和检务公开整改外贸公司怎么找客户
  • 为网站设计手机版自己建的网站地址
  • 企业网站建设用标语网站如何在国外推广
  • 如何架设网站服务器邯郸市住房公积金管理中心
  • 网站已备案添加新域名电商平台网站有哪些
  • 广西网站建设教程wordpress 图片管理插件
  • 佛山网站推广市场设计建网站
  • 济南建设网站公司哪个好苏州企业网站设计方案
  • 房地产网站制作教程多少钱翻译
  • 怎么做网站竞价推广可以进网站的软件
  • 东南亚购物网站排名京东联盟 wordpress
  • 网站排名软件推荐wordpress 证书风险
  • 老域名做网站阿里巴巴网站建设的目的
  • 关于春节的网站设计html世界互联网峰会2022
  • 资兴市建设局网站阿里巴巴国际站下载电脑版
  • 电脑报网站建设成品网站货源
  • 免费的关键词优化工具广东搜索引擎优化
  • 网站建设套餐电话wordpress query_post showpost参数
  • 北京 网站设计招聘信息上海网站建设乐云seo
  • 花市小说网站那里进邢台信息港最新二手房出售信息
  • 网站怎么做定位功能交通局网站模板
  • 两性做受技巧视频网站网站备案需要审核多久
  • 合肥论坛网站制作移动网站开发服务器
  • 手机做的兼职网站wordpress如何开启邀请码注册
  • 前端开发培训机构哪家好长沙网站seo服务
  • 做网站要知道哪些代码添加了字体为什么wordpress
  • 邯郸医疗网站建设新网站建设验收
  • 成都网站建设联系电话photoshop破解版下载免费中文版
  • 网站建设优化的技巧如何做网络营销推广掷25金手指效率高