QT技巧当日小结

  1. 在QT当中,可以通过把QString转换成QByteArray,把QByteArray对象写入到buffer中,再调用system()就可以在QT中使用linux下的命令.
  2. 可以在类当中再定义一个类,并定义一个该类的指针来指向其实例.
  3. 要用多线程时,有两种方法,一种是构造QThread的子类,一种是直接new一个QThread的实例,再把相应的对象移到线程中.
  4. 在用QT开发比较大的工程时,可以把关联性强的规为一种类型的.pri,在.pri文件中用SOURCES+=,HEADERS+=,INCLUDEPATH+=来包含这一类型的源代码文件,然后在.pro中用include(*.pri)来包含这些文件.
  5. 在使用一些静态库(.a),动态库(.s)之前必须先要确定这是哪一个平台的库,以免到后面出现库不兼容的报错.
  6. QThread的对象是从属于原线程,而QThread::run()是跑在新的线程中.
  7. 友元类B可以通过把其当作朋友的类A的对象去操作类A的对象里的数据成员及成员函数.
  8. 在QT中可以通过调用system()来执行shell命令.
  9. extern C{} 可以用来指定用C编译器来对源代码进行编译.
  10. #progma pack(push);//把当前内存对齐方式入栈
    #progma pack(1);//把当前内存对齐方式设为1字节
  11. 在实际开发中,一般喜欢将界面美化和功能代码分开,界面美化用QSS来完成,在resource.qrc文件中添加.qss文件,最后在qapp.setStyleSheet()中设置.
  12. 在QT中用QTextStream来对文件进行写入操作时,一定要设置它的编码格式,否则会出现乱码.比如:

    QTextStream out(&eventLogInfo); out.setCodec(QTextCodec::codecForName(“UTF-8”));

  13. 对文件进行操作时必须养成一个先对文件进行打开的好习惯,否则文件内容写入不了.
  14. 在linux平台下操作文件夹时,通过QDir::entryInfoList()也会返回 目录下的当前目录和父目录(即: ** . ** 和 ** .. **)
  15. 在QT下如果用system()来通过操作系统中的命令来操作文件(如复制)的话,由于启用的新的进程,再加上进程间的切换时间导致这种方式会比直接在当前进程下用代码通过文件句柄来操作慢了一万倍以上.
  16. 有时在PC平台下,用QT编写的界面在嵌入式平台上一些窗口不会在顶层,此时可以通过raise()升起.