1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00
2018-05-02 09:17:33 +08:00

170 lines
5.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "widget.h"
#include <QApplication>
#include "qqtdictionary.h"
int main ( int argc, char* argv[] )
{
QApplication a ( argc, argv );
QString tt;
tt = QString ( "%1" ).sprintf ( "%4d", 13 );//" 13"
tt = QString ( "%1" ).arg ( 13, 4, 10 );
pline() << tt;
/*
QQtWidgetFactory::registerObject<QPushButton>();
QObject* obj = QQtWidgetFactory::createObject ( "QPushButton" );
pline() << obj->inherits ( "QWidget" );
pline() << obj->inherits ( "QPushButton" );
pline() << obj->inherits ( "QObject" );
obj->setObjectName ( "bbb" );
pline() << obj->objectName();
QQtObjectManager::registerObject ( obj );
*/
//对QQtDictionary的使用进行测试。
QQtDictionary d0;
d0["cc"] = "dd";
pline() << d0["cc"].getValue();
QQtDictionary d1;
QQtDictionary d2 ( QVariant ( "CCCC" ) );
d1.appendChild ( d2 );
pline() << d1[0].getValue();
d1[0] = "ff";
pline() << d1[0].getValue();
QQtDictionary d3;
d3["cc"]["dd"] = "ee";
pline() << d3["cc"]["dd"].getValue().toString();
QQtDictionary d4;
for ( int i = 0; i < 5; i++ )
{
QQtDictionary d ( QVariant ( QString::number ( i ) ) );
d4.appendChild ( d );
}
pline() << d4.count();
for ( int i = 0; i < d4.count(); i++ )
{
pline() << d4[i].getValue().toString();
}
QQtDictionary d5;
/*后续有map操作这一步就没有用了*/
d5.appendChild ( "5.7" );
d5.appendChild ( "5.8" );
d5.appendChild ( "5.9" );
/*后续有map操作这一步就没有用了*/
d5["5.7"].appendChild ( "5.7.2" );
d5["5.7"].appendChild ( "5.7.3" );
d5["5.7"].appendChild ( "5.7.4" );
d5["5.7"]["5.7.4"].appendChild ( "xxx.dmg" );
d5["5.7"]["5.7.4"][0].appendChild ( "xxx.dmg" );
d5["5.7"]["5.7.4"][0].appendChild ( "2017-12-12" );
d5["5.7"]["5.7.4"][0].appendChild ( "1.2G" );
d5["5.7"]["5.7.4"][0].appendChild ( "Detail" );
d5["5.7"]["5.7.4"][0].insertChild ( 4, "Detail2" );
//pline() << "\n" << d5;
pline() << "\n" << d5["5.7"];
QQtDictionaryMapIterator itor ( d5["5.7"].getMap() );
while ( itor.hasNext() )
{
itor.next();
pline() << "\n" << itor.key() << itor.value();
}
pline () << d5["5.7"]["5.7.4"][0].getType();
pline () << d5["5.7"]["5.7.4"][0].count();
for ( int i = 0; i < d5["5.7"]["5.7.4"][0].count(); i++ )
{
pline() << d5["5.7"]["5.7.4"][0][i].getValue().toString();
}
pline() << d5["5.7"]["5.7.4"][0];
QQtDictionary node = d5;
pline() << node["5.7"]["5.7.4"][0][0].getValue().toString();
/*在这里有list操作前边"5.7"的map就没有用了*/
/*但是再过去做过的list类型的操作都会被保留也就是说中间出现过概念错误没问题还保留着*/
d5["5.7"].appendChild ( "5.7.5" );
for ( int i = 0; i < d5["5.7"].count(); i++ )
{
pline() << d5["5.7"][i].getValue().toString();
}
pline() << d5["5.7"];
char* cc = NULL;
char* bb = "ddddd";
QString ccq = QString ( "%1%2" ).arg ( cc ).arg ( bb );
pline() << ccq;
//Widget w;
//w.show();
//QQtDictionary appendChild函数存在一个问题在这里测试是否解决。
//内部实现使用list的append函数会引用外部的类实例这导致在free空间的时候存在很多莫名其妙的二次free尤其外部实例和QObject关联的时候。
//现在内部实现使用push_back这里检测QQtDictionary还有没有二次free这个bug。
QQtDictionary* n0 = new QQtDictionary ( QVariant ( "This is a value" ) );
//这里打印一下n0的值和地址
pline() << n0->getValue().value<QString>();
pline() << hex << n0->getValue().constData();
QQtDictionary t0;
//这里appendChildt0变成一个list。
t0.appendChild ( *n0 );
//这里更改外部实例的值,显然外部实例的值已经改变了。
n0->getValue().setValue<QString> ( "This is a changed value" );
//为了证实这一点,这里打印值
pline() << "外部空间的值" << n0->getValue().value<QString>();
//这里可能还有一个疑惑,新的值是不是占据了新的空间?其实,没有。这里打印地址证实。
pline() << "外部空间的地址" << hex << n0->getValue().constData();
//这里删除外部实例n0不用把n0置零不必要n0和申请的存储空间是两回事。
delete n0;
//但是,置零,规范一点。
n0 = NULL;
//外部的空间的值被改变了,并且删除了,内部空间的值,发生了什么?
//现在检查,内部的值是多少?
pline() << "检测内部空间的值:" << t0[0].getValue().value<QString>();
pline() << "检测内部空间的地址:" << hex << t0[0].getValue().constData() ;
//windows
//经过测试QQtDictionary内部空间成功和外部空间分离bug清除。
//测试QQtDictionary的打印能力
QQtDictionary v00;
pline() << v00;
QQtDictionary v0 ( "This is a value" );
pline() << v0;
QQtDictionary v1;
v1.appendChild ( "CCCC" );
v1.appendChild ( "DDDD" );
v1[0].appendChild ( "2-CCCC" );
pline() << v1;
pline() << v1[0];
QQtDictionary v2;
v2["AAAA"] = "NNNN";
v2["BBBB"] = "MMMM";
pline() << v2;
return 0;//a.exec();
}