https://github.com/flaviomarcio/qstm
Qt-QStm, set of classes and utilities for configuring and working with Qt/QVariant/JSON types.
https://github.com/flaviomarcio/qstm
converter cpp formatting qt setting utilities
Last synced: 6 months ago
JSON representation
Qt-QStm, set of classes and utilities for configuring and working with Qt/QVariant/JSON types.
- Host: GitHub
- URL: https://github.com/flaviomarcio/qstm
- Owner: flaviomarcio
- License: mpl-2.0
- Created: 2021-10-11T00:42:50.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-02-13T03:23:49.000Z (about 2 years ago)
- Last Synced: 2025-02-21T13:19:27.632Z (about 1 year ago)
- Topics: converter, cpp, formatting, qt, setting, utilities
- Language: C++
- Homepage:
- Size: 512 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# QStm
**Set of classes and utilities for configuring and working with Qt types.**
## Working architecture
>## Support
> Qt5, Qt6
## Prerequisits
>```bash
> mkdir myproject;
> cd myproject;
> git clone git@github.com:flaviomarcio/qstm.git;
>```
>Check example in QStm/example/*
## CMake Build information
>```
>## initial CMake parameters
>
>-GNinja
>-DCMAKE_BUILD_TYPE:STRING=Debug
>-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
>-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
>-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
>-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
>-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
>-DCMAKE_INSTALL_PREFIX=~/build/myproject/install/Debug
>```
>```bash
> cd qstm
> mkdir build;
> cd build;
> cmake ..
> make;
> make install;
>```
## QMake Build information
>```bash
> cd qstm
> qmake qstm.pro
> make;
> make install;
> ls -l;
>```
## Configure QMake project
>```c++
>CONFIG += c++17
>CONFIG += console
>CONFIG += silent
>CONFIG -= debug_and_release
>QT += gui core widgets
>
>TEMPLATE = app
>TARGET = demo
>
>include($$PWD/../../../qstm/qstm.pri)
>```
## Classes
>## QStm::MetaObjectUtil
>Class contains functions to convert create ***QObject*** using ***QMetaObject*** read ***QMetaProperty*** and set in ***QVariant*** and write in ***QMetaProperty*** using ***QVariant*** or ***JSON***
>```c++
>#include
>
>void run()
>{
> ...more
>}
>```
>## QStm::ResultValue
>Based on ***QObject***, use for simultaneous transport of values and function result.
>Avoid instances of classes using New, she transport values with no need to create classes.
>```c++
>#include
>
>class SimpleObject : public QStm::Object {
> Q_OBJECT
>public:
> ResultValue&hashMd5(const QVariant&bytes)
> {
> if(bytes.isNull())
> return this->lr()=false;//return false and without error
>
> if(bytes.toString().trimmed().isEmpty())
> return this->lr().setBadRequest("Invalid data");//return false and with error
>
> QStm::VariantUtil vu;
> QVariant md5=vu.toByteArray(bytes);
> return this->lr(md5);//return success and return value
> }
>};
>
>void check()
>{
> SimpleObject simpleObject;
>
> QByteArray bytes("1234567890");
>
> if(!simpleObject.hashMd5(bytes)){
> qWarning()< qWarning()< return;
> }
>
> qWarning()<}
>```
>Others conversion basead in QVariant
>```c++
>//to bytes
>qWarning()<
>//to int
>qWarning()<
>//to Double
>qWarning()<
>//to QString
>qWarning()<
>//to QDate
>qWarning()<
>//to QTime
>qWarning()<
>//to QDateTime
>qWarning()<
>//to QUrl
>qWarning()<
>//to QUuid
>qWarning()<
>//to QVariantList
>qWarning()<
>//to QStringList
>qWarning()<
>//to QVariantHash
>qWarning()<
>//to QVariantMap
>qWarning()<
>//to void*
>qWarning()<
>//to QObject
>qWarning()<();>
>```
>## QStm::Object
>Based on ***QObject*** contains functions to convert to type ***QVariant*** and assigned values of ***QVariantHash***
>```c++
>#include
>
>class MyFirstObject : public QStm::Object {
> Q_OBJECT
>
> Q_PROPERTY(QUuid uuid MEMBER _uuid NOTIFY uuidChanged)
> Q_PROPERTY(QString name MEMBER _name NOTIFY nameChanged)
>
>public:
> Q_INVOKABLE explicit MyFirstObject(QObject*parent=nullptr):QStm::Object(parent)
> {
> }
>
>signals:
> void uuidChanged();
> void nameChanged();
>
>private:
> QUuid _uuid;
> QString _name;
>};
>
>void run()
>{
> MyFirstObject myFirstObject;
>
> QVariantHash vHash=myFirstObject.toHash();//include QMetaProperty in QVariantHash
> qWarning()< //ouput is QVariantHash{ {"uuid", QUuid(...)}, {"name", QString(...)} }
>}
>```
>## QStm::QCurrency
>Based on ***bcmath*** is a ***QVariant*** type, used to manipulate currency values without difficulty the type ***double***
>```c++
>#include
>
>void Util::usingQCurrency()
>{
> QCurrency currency;
> currency=1.5464137891;
> qWarning()< //output is 1.45
>
> currency=1;
> currency+=0.5464137891;
> qWarning()< //output is 1.45
>
> currency+=1;
> qWarning()< //output is 2.45
>
> currency-=1;
> qWarning()< //output is 1.45
>
> currency+=1;
> currency/=1;
> qWarning()< //output is 1.00
>}
>```
>## QStm::VariantUtil
>Based on ***QVariant***, used to manipulate ***QVariant*** types.
>>Simplify conversion of json values em ***QVariantList*** and ***QVariantHash***.
>>Simplify conversion of ***QVariant*** to others ***QVariant*** types.
>>Functions to handle md5 and uuid values for ***QVariant***
>```c++
>#include
>
>void Util::usingVariantUtil()
>{
> VariantUtil vu;
>
> {// json conversion
>
> //list json bytes
> auto bytesList="{\"row 1\",\"row 2\",\"row 2\"}";
>
> //identify and convert to QVariantList
> QVariantList vList=vu.toList(bytesList);
>
> qWarning()<
> //identify and convert to QStringList
> QStringList vStringList=vu.toStringList(bytesList);
>
> qWarning()<
>
> //object json bytes
> auto bytesMap="{\"rows\":{\"row 1\",\"row 2\",\"row 2\"}}";
>
> //identify and convert to QVariantHash
> QVariantHash vHash=vu.toHash(bytesMap);
> qWarning()<
> //identify and convert to QVariantList
> QVariantMap vMap=vu.toMap(bytesMap);
>
> qWarning()< }
>
> {// QVariant conversion to QString and bytes JSON
>
> //QVariantList object
> auto objectList=QVariantList{"row 1","row 2","row 2"};
>
> qWarning()<
> //QVariantHash object
> auto objectMap=QVariantHash{{"rows", QStringList{"row 1","row 2","row 2"}}};
>
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()< }
>
> {// QString conversion to QVariant types
>
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()< }
>}
>```
>## QStm::FormattingUtil
>Based on ***QVariant***, using masks to manipulate ***QVariant*** formatting values to especific types ***QDateTime, QDate, QTime, QCurrence, Double, Int, ....*** .
>```c++
>#include
>
>void Util::usingFormattingUtil()
>{
> FormattingUtil fu;
>
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<
> qWarning()<}
>```
>## QStm::DateUtil
>Based on ***QVariant***, use to manipulate then types ***QDateTime, QDate, QTime***, contains functions to calculate datestime, ex: months, years, ranges and others.
>```c++
>#include
>
>void run()
>{
> ...more
>}
>```
>## QStm::DoubleUtil
>Based on ***QVariant***, use to manipulate then types ***QCurrency, double, int, qlonglong***, contains functions to calculate numeric values, ex: conversions, ranges and others.
>```c++
>#include
>
>void Util::usingDoubleUtil()
>{
> DoubleUtil dbu;
>
> {//rearrange values
> double vMin=2;
> double vMax=1;
> qWarning()< }
>
> {//check and rearrange values
> double vVal=1.5;
> double vMin=2;
> double vMax=1;
> qWarning()< }
>}
>```