|
|
DaoQt: 应用程序与图形界面框架Qt的封装Qt4.5的官方文档: Qt Reference Documentation . Qt是一个非常优秀的C++应用程序与图形界面库和框架。 使用DaoQt模块,Qt的大部分功能可以在Dao语言里使用。 DaoQt对Qt的封装保留了大部分的Qt类的继承关系和 函数的函数原型。 不过,由于autobind工具的局限性, 还有一些问题需要在使用DaoQt模块是注意。 下面将会提到这些问题。 (此模块使用LGPL协议发布!)
load DaoQtCore;
load DaoQtGui require DaoQtCore; app = QApplication( 'Hello World!' ); lab = QLabel( 'Hello World!' ); lab.resize( 300, 200 ); lab.move( 200, 200 ); lab.show(); app.exec();
使用DaoQt模块,Signal和Slot可以方便地在Qt对象和继承的Dao对象之间 连接。
在大部分情况下,如果QString被用作函数的参数或返回值, 那么在封装此函数时,它将被自动地转换为Dao字符串string类型。 不过,如果它是作为指针使用,那么将不做自动转换。 作为例子,对如下Qt函数,
QString qt_func( const QString & p1, QString *p2 );
其封装将有如下原型,
qt_func( p1 : string, p2 : QString ) => string;
为了使用QString的功能,QString对象必须使用QString的构造函数显示的创建,如,
s1 = QString( 'hi' );
s2 = QString( 0x66 ); 对于QString类的成员函数,如果函数的返回值为QString, 它将不被转换为Dao字符串。如
QString& QString::append(const QString &s);
将被封装为,
append( self : QString, s : string )=>QString
这样将允许用户写如下代码,
QString( 'abc' ).append( 'def' ).append( 'gh' );
要从QString转换为Dao字符串,可使用 toLocal8Bit() 。 类似地,在DaoQt里,QChar被转换为int,而QByteArray也被转换为Dao string。
当QList<X>, QList<X*>, QVector<X>, 和QVector<X*>类型被用作函数参数或返回值时, 它们大部分都被转换为了list<X>。
QTextStream的重载操作符没有被封装,下列函数被加到 被封装的QTextStream类型里,以便写入数据到流。
write( self : QTextStream, data : int )=>QTextStream
write( self : QTextStream, data : float )=>QTextStream write( self : QTextStream, data : double )=>QTextStream write( self : QTextStream, data : string )=>QTextStream write( self : QTextStream, data : any )=>QTextStream QFile.close()在程序结束前被调用。
view count 1125 times
created at 2009-06-27, 10:42 GMT modified at 2009-06-27, 12:39 GMT |
fu: Many thanks (Jul.04,04:29) klabim: fixed Hi, great, now my test works now :- ). (Jun.30,17:51) Nightwalker: Few suggestions (Jul.03,14:37) |