系列索引:QxOrm入门教程索引
本文介绍XML相关操作。
工程创建一个纯C++工程,设置pro
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 include(D:\gsdf\include\QxOrm\QxOrm.pri) CONFIG += c++17 console DEFINES += _BUILDING_USER # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 !contains(DEFINES, _QX_NO_PRECOMPILED_HEADER) { PRECOMPILED_HEADER = precompiled.h } INCLUDEPATH += D:\gsdf\include\QxOrm\include LIBS += -LD:\gsdf\lib -lQxOrmd HEADERS += \ user.h SOURCES += \ main.cpp \ user.cpp # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
主要就是添加QxOrm包含文件,设置预编译头文件,添加链接库
源码 预编译对应的precompiled.h文件
1 2 3 4 5 6 #ifndef PRECOMPILED_H #define PRECOMPILED_H #include <QxOrm.h> #endif
注意,预编译相关设置一定要有,否则编译会报错。
User类头文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #ifndef USER_H #define USER_H #include "QxCommon/QxMacro.h" #include "QxOrm.h" #include "QxRegister/QxRegister.h" #include "QxPrecompiled.h" #include "QxOrm_Impl.h" class User {public : User () : id (0 ) { } virtual ~User () { } long id; QString name; int age; };QX_REGISTER_HPP_EXPORT_DLL (User, qx::trait::no_base_class_defined, 1 )#endif
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include "user.h" QX_REGISTER_CPP_EXPORT_DLL (User)namespace qx { template <> void register_class (QxClass<User> & t) { t.id (&User::id, "id" ); t.data (&User::name, "name" , 1 ); t.data (&User::age, "age" ); } }
主程序文件main文件,与sql处理类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include "QxOrm_Impl.h" #include "QxDao/QxSqlDatabase.h" #include "QxDao/QxDao.h" #include "QxCommon/QxCache.h" #include "user.h" int main (int argc, char *argv[]) { typedef QSharedPointer<User> UserPtr; UserPtr u1; u1. reset (new User ()); u1->name = "Jack Ma" ; u1->age = 30 ; UserPtr u2; u2. reset (new User ()); u2->name = "Pony" ; u2->age = 25 ; UserPtr u3; u3. reset (new User ()); u3->name = "Waleon" ; u3->age = 18 ; typedef QVector<UserPtr> VectorUser; VectorUser users; users.push_back (u1); users.push_back (u2); users.push_back (u3);#if _QX_SERIALIZE_XML qx::serialization::xml::to_file (users, "./export_users.xml" ); VectorUser usersXmlTmp; qx::serialization::xml::from_file (usersXmlTmp, "./export_users.xml" );#endif return 0 ; }
运行编译运行,可以在本地发现export_users.xml文件。
内容为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <QVector-QSharedPointer-User-- class_id ="0" tracking_level ="0" version ="0" > <count > 3</count > <item class_id ="1" tracking_level ="0" version ="0" > <qt_shared_ptr class_id ="2" tracking_level ="1" version ="1" object_id ="_0" > <id > 0</id > <name class_id ="3" tracking_level ="0" version ="0" > Jack Ma</name > <age > 30</age > </qt_shared_ptr > </item > <item > <qt_shared_ptr class_id_reference ="2" object_id ="_1" > <id > 0</id > <name > Pony</name > <age > 25</age > </qt_shared_ptr > </item > <item > <qt_shared_ptr class_id_reference ="2" object_id ="_2" > <id > 0</id > <name > Waleon</name > <age > 18</age > </qt_shared_ptr > </item > </QVector-QSharedPointer-User-- >