1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00
2020-04-29 16:20:05 +08:00

241 lines
6.8 KiB
C++

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qqtorderedmap.h>
#include <qqtordereddictionary.h>
#include <qqtdicthelper.h>
#include <QDebug>
#include <QFile>
template<typename T>
QString qDebugStr ( T& t )
{
QString str1;
QDebug ( &str1 ) << t;
return str1;
}
MainWindow::MainWindow ( QWidget* parent ) :
QMainWindow ( parent ),
ui ( new Ui::MainWindow )
{
ui->setupUi ( this );
QMap<QString, QString> m0;
m0.insert ( "String0", "String0" );
m0.insert ( "AA0", "AA0" );
m0.insert ( "EE0", "EE0" );
QMapIterator<QString, QString> i0 ( m0 );
while ( i0.hasNext() )
{
i0.next();
qDebug() << i0.key() << i0.value();
}
for ( QMap<QString, QString>::Iterator i1 = m0.begin();
i1 != m0.end(); i1++ )
{
qDebug() << i1.key() << i1.value();
}
for ( QMap<QString, QString>::ConstIterator i1 = m0.begin();
i1 != m0.end(); i1++ )
{
qDebug() << i1.key() << i1.value();
}
QOrderedMap<QString, QString> map;
map.insert ( "AA0", "AA0" );
map.insert ( "EE0", "EE0" );
map.insert ( "NN0", "NN0" );
map.insert ( "KK0", "KK0" );
map.insert ( "CC0", "CC0" );
map.insert ( "String0", "String0" );
//谨慎 模板里i++操作符异常。唉,我错了。前缀++,后缀++不一样。
QOrderedMapIterator<QString, QString> itor ( map );
//qDebug() << itor.hasNext();
while ( itor.hasNext() )
{
itor.next();
qDebug() << itor.hasNext();;
qDebug() << itor.key() << itor.value() << itor.hasNext();;
//ui->textBrowser_2->append ( ds0.dictionary().toJson ( QJsonDocument::Indented ) );
//ui->textBrowser_2->append ( ds0.buffer().toHex() );
}
itor.toBack();
while ( itor.hasPrevious() )
{
itor.previous();
qDebug() << itor.hasPrevious();;
qDebug() << itor.key() << itor.value() << itor.hasPrevious();;
}
//error
qDebug() << map["AA0"];
qDebug() << map.value ( "AA0" );
qDebug() << ".......";
#ifdef Q_MAP_DEBUG
map.dump();
#endif
QFile file ( "weather.json" );
file.open ( QFile::ReadOnly );
QByteArray bytes = file.readAll();
file.close();
QOrderedDictionary m2;
m2.fromJson ( bytes ); //Json接口排序了
qDebug() << m2;
bytes = m2.toJson ( 4 );
ui->textBrowser->append ( QString ( bytes ) );
bytes = m2.toJson ( 0 );
ui->textBrowser_2->append ( QString ( bytes ) );
bytes = m2.toJson ( -1 );
ui->textBrowser_5->append ( QString ( bytes ) );
QOrderedDictionary m3;
m3["GGG"] = "GGG";
m3["ZZZ"] = "ZZZ";
m3["BBBG"] = "BBBG";
m3["JJJ"][0] = "CJJJ0";
m3["JJJ"][1] = "AJJJ1";
m3["JJJ"][2] = "BJJJ2";
qDebug() << "Test:" << m3;
qDebug() << qPrintable ( m3.toJson ( 4 ) ); //Json接口排序了。
qDebug() << qPrintable ( m3.toXML ( 4 ) ); //
QOrderedDictionaryMapIterator itor2 ( m3.getMap() );
while ( itor2.hasNext() )
{
itor2.next();
const QString& key = itor2.key();
const QOrderedDictionary& value = itor2.value();
pline() << key << value;
}
itor2.toBack();
while ( itor2.hasPrevious() )
{
itor2.previous();
qDebug() << itor2.hasPrevious();;
qDebug() << itor2.key() << itor2.value() << itor2.hasPrevious();;
}
pline() << "Test 可修改 iterator";
for ( QQtOrderedDictionaryMap::Iterator itor = m3.getMap().begin();
itor != m3.getMap().end(); itor++ )
{
qDebug() << itor.key() << itor.value();
}
pline() << "Test const iterator";
for ( QQtOrderedDictionaryMap::ConstIterator itor = m3.getMap().constBegin();
itor != m3.getMap().constEnd(); itor++ )
{
qDebug() << itor.key() << itor.value();
}
pline() << "Test const iterator 2";
for ( QQtOrderedDictionaryMap::ConstIterator itor = m3.getMap().begin();
itor != m3.getMap().end(); itor++ )
{
qDebug() << itor.key() << itor.value();
}
QPair<QQtOrderedDictionaryMap::Iterator, QQtOrderedDictionaryMap::Iterator> pair = m3.getMap().equal_range ( "BBBG" );
QQtOrderedDictionaryMap::Iterator firstKey = pair.first;
QQtOrderedDictionaryMap::Iterator lastKey = pair.second;
const QString& key1 = firstKey.key();
const QQtOrderedDictionary& value1 = firstKey.value();
const QString& key2 = lastKey.key();
const QQtOrderedDictionary& value2 = lastKey.value();
pline() << key1 << key2;
QPair<QQtOrderedDictionaryMap::ConstIterator,
QQtOrderedDictionaryMap::ConstIterator> pair2 = m3.getMap().equal_range ( "BBBG" );
QQtOrderedDictionaryMap::ConstIterator constFirstKey = pair2.first;
QQtOrderedDictionaryMap::ConstIterator constLastKey = pair2.second;
const QString& key3 = constFirstKey.key();
const QQtOrderedDictionary& value3 = constFirstKey.value();
const QString& key4 = constLastKey.key();
const QQtOrderedDictionary& value4 = constLastKey.value();
pline() << key3 << key4;
QOrderedDictionary m4;
file.setFileName ( "mainwindow.ui" );
file.open ( QFile::ReadOnly );
bytes = file.readAll();
file.close();
m4.fromXML ( bytes );
//qDebug() << m4["ui"];
ui->textBrowser_4->append ( qPrintable ( m4.toXML ( 4 ) ) );
QQtDictionary dict;
dict["Hello"][1] = "A1";
dict["But"][2]["你好"] = "B";
pline() << "sorted dict" << qPrintable ( dict.toJson ( QJsonDocument::Indented ) ) ;
QQtOrderedDictionary dict1;
dict1 = dict;
pline() << "ordered dict:" << qPrintable ( dict1.toJson ( 4 ) ) ;
QQtOrderedDictionary dict2;
dict2["G"]["B"] = "C";
dict2["T"] = "C";
QQtOrderedDictionary dict3;
dict3 = dict1;
QQtDictionary dict4;
dict4 = dict;
QQtDictionary dict5;
dict5["B"]["E"] = "C";
pline() << bool ( dict1 == dict ); // =
pline() << bool ( dict == dict1 ); // =
pline() << bool ( dict2 == dict ); // !=
pline() << bool ( dict == dict2 ); // !=
pline() << bool ( dict1 == dict3 ); // =
pline() << bool ( dict == dict4 ); // =
pline() << bool ( dict == dict5 ); // !=
pline() << bool ( dict2 == dict1 ); // !=
QQtOrderedDictionary dict6;
dict6["StrKey"][0]["BBB"]["JJJ"][1]["GGG"] = "A Value.";
QStringList keyList;
keyList << "StrKey" << "0" << "BBB" << "JJJ";
QQtOrderedDictionary& rd1 = QQtGetDictNode ( dict6, keyList );
pline() << rd1;
pline() << "-----";
keyList << "1";
rd1 = QQtGetDictNode ( dict6, keyList );
pline() << rd1;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::testMapFunc()
{
}