[Qt] Qt编程经验总结 [2013-07-01更新]

1. 如果Qt工程的构建配置不是选择Debug模式,则启动gdb后无法使用list执行查看源程序。

2. 在运行设置中设置的参数只在程序运行时被加入,不对生成的文件造成影响。

3. Qt程序在执行到application.exec()时,界面才会被绘制出来,且开始事件驱动。

4. 当退出事件响应函数(槽函数)后,窗口才重新刷新。

5. 设置不同的构建配置后,最后清理项目后再重新构建,否则可能编译不能通过。

6. 某些UI控件在PC、目标板上会呈现出不同的外观,如QComboBox。

7. 信号与槽的连接不能放在 ui->setupUi(this) 之前,否则程序不能执行。

8. Qt Embedded 4.6.3 不支持以Qt::Tool为WindowFlags的窗体。

9. 在工程中添加一个新类时,如果该类继承了QObject、QWidget、QMainWindow、QDeclarativeItem以外的类,那么类型信息一律选择QObject,以避免出现一些未知的错误。

10. 编写网络程序时应该使用1024以上的端口号,1024以下的端口号通常被系统保留,紧密的绑定了一些服务(如80端口是http服务、21端口是ftp服务)。

11. Qt的“&”和“and”
    &: 该操作符两边的数据进行逐位相与的预算。
    and: 逻辑“与”,结果为布尔值。

12. 尽量用new/delete代替malloc/free。

13. 在工程文件中加入如下定义,可屏蔽 qDebug() 输出。
    DEFINES += QT_NO_DEBUG_OUTPUT

14. 对于中文字符比较,若使用的编码方式正确,则可直接使用“==”进行比较;否则需要调用 QString::compare(str1, str2)。

15. 在.pro文件中添加 DEFINES 的声明,必须放在 TARGET 与 TEMPLATE 之前才有效。
例如:
    ...
    DEFINES  += BUILD_VERSION_PC
    ...
    TARGET = exec_file_name
    TEMPLATE = app

16. 窗体关闭
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));   // 不触发 closeEvent()
connect(quitAction, SIGNAL(triggered()), this, SLOT(close()));  // 触发 closeEvent()

17. 创建快捷方式(在Windows下快捷方式必须以“lnk”为扩展名)
bool QFile::link ( const QString & fileName, const QString & linkName )

18. qApp是指向当前QApplication的指针,可用来进行相应的全局操作。

19. 造型(obj是一对象指针)
QSpinBox *sp = qobject_cast<QSpinBox *>(obj);

20. 修改工程文件(.pro)的名称不会对工程造成不良影响
    可能需要重新指定 [构建目录] 及目标文件名称
    (修改名称的同时应删除.pro.user文件,在打开项目时 Qt Creator 会自动重新生成一个)

21. 使用.pri文件
例如:在.pro文件中加入 include(lib/qextserialport-1.2beta2/qextserialport.pri)
添加上述语句后 qextserialport.pri 中的头文件可直接包含,如:
#include "qextserialport.h"


你可能感兴趣的:([Qt] Qt编程经验总结 [2013-07-01更新])