Qt文档阅读笔记-Q_CLASSINFO官方解析与实例
生活随笔
收集整理的這篇文章主要介紹了
Qt文档阅读笔记-Q_CLASSINFO官方解析与实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
官方解析
Q_CLASSINFO
這個宏為類提供額外的信息,要想獲取這個Q_CLASSINFO這個信息要使用QObject::metaObject()。Qt在Active Qt,Qt D-BUS以及QML中都限制使用這個特征。
這個額外的信息通過Name以及Value來提醒,存儲的都是字符串
例子:
?
博主例子
這個宏與C++里面的typeid很像,并且都是在RTTI里面搞的。
下面來舉一個Q_CLASSINFO簡單的使用例子,
下一篇博文給出它與typeid,繼承法,以及元對象里的className,4種方法,區分當前調用的是哪個類!
程序運行截圖如下:
源碼如下:
myclass.h
#ifndef MYCLASS_H #define MYCLASS_H#include <QObject>class MyClass : public QObject {Q_OBJECTQ_CLASSINFO("Version","1.0.0")Q_CLASSINFO("author 中文","CSDN IT1995") public:MyClass(QObject *parent = 0); };#endif // MYCLASS_Hwidget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget>class MyClass;namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;MyClass *m_myClass; };#endif // WIDGET_Hmain.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }myclass.cpp
#include "myclass.h"MyClass::MyClass(QObject *parent) : QObject(parent) {}widget.cpp
#include "widget.h" #include "ui_widget.h" #include "myclass.h" #include <QDebug> #include <QMetaObject> #include <QMetaClassInfo>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);m_myClass=new MyClass;qDebug()<<m_myClass->metaObject()->classInfo(0).name();qDebug()<<m_myClass->metaObject()->classInfo(0).value();qDebug()<<m_myClass->metaObject()->classInfo(1).name();qDebug()<<m_myClass->metaObject()->classInfo(1).value(); }Widget::~Widget() {delete ui; }?
總結
以上是生活随笔為你收集整理的Qt文档阅读笔记-Q_CLASSINFO官方解析与实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt与java web通过数据库实现数据
- 下一篇: Qt学习笔记-各种对话框基本使用