Qt开发杂记(一)

    技术2022-05-11  130

    在使用MOC的时候,Q_OBJECT这个宏不能用在一个类的定义文件中,只能在单独作为一个类的声明文件中用,否则会出现“vtable for XXXX(类名)”的出错提示。如果一个类只声明了,而没有定义,也会出现上述错误. 这时可以在这个文件的末尾加上#include "xxxxxx.moc"(xxxxx为不要.cpp后缀的文件名)便不会出错了。

    ---------------------------------------------------------------------------------

    在使用QMultilineEdit这个类的时候,我得出以下这个结论:clear之后setText之后再text可以得到文本;clear之后insertLine之后再text不能得到文本(得到null),这时可以用textLine得到文本;不用clear,insertLine之后再text可以得到文本。

    ---------------------------------------------------------------------------------

    在QTextView中显示的字符串,如果首尾分别以 及标志,那么原来的换行将会被忽略。如果将QTextView的对象设置为setTextFormat(RichText),那么同样会忽略原来的换行符。

    ---------------------------------------------------------------------------------

    1--------》    QByteArray array;    QTextStream ts( array, IO_WriteOnly );    ts << "pi = " << 3.14 << '/0';     // array == "pi = 3.14"这段代码相当于:1--------》    QByteArray array;    QBuffer buf( array );    buf.open( IO_WriteOnly );    QTextStream ts( &buf );    ts << "pi = " << 3.14 << '/0';              // array == "pi = 3.14"    buf.close();这是因为在QTextStream.cpp里有这样的定义:QTextStream::QTextStream( QByteArray a, int mode ){    init();    dev = new QBuffer( a );    ((QBuffer *)dev)->open( mode );    owndev = TRUE;    setEncoding( Latin1 ); //### Locale???    reset();    d->sourceType = QTextStreamPrivate::ByteArray;}也就是说1中的在构造QTextStream的时候,已经要构造一个QBuffer。

    --------------------------------------------------------------------------QStringList是一个拥有多个QString对象的QValueList,它不同于QStrList,QStrList保存的是一个字符集指针,而QStringList保存的是一个真实的QString对象集。像QString一样,QStringList对象之间是隐含共享的,它们通过围绕一个值参来达到快速安全的目的。例:        QStringList list;

            // three different ways of appending values:        list.append( "Torben");        list += "Warwick";        list << "Matthias" << "Arnt" << "Paul";

            // sort the list, Arnt's now first        list.sort();

            // print it out        for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {            printf( "%s /n", (*it).latin1() );        }QStringList拥有诸如sort(),split(),join()及grep()这样的方法使QStringList操作更方便。


    最新回复(0)