)
1、排查问题要用debug模式release模式不一定能定位到问题语句。2、多个控件布局水平/垂直时将其中一个hide其他控件未必会拉伸但将隐藏的控件show时拉伸的控件必定会自动压缩。3、界面应用布局时各控件位置尺寸展开过程发生在界面show之后。4、界面使用布局时子窗口若继承的是QWidget子窗口根本不会show子窗口若继承的是QWidget使用setGeomtery函数时相对父窗口的坐标并不起作用坐标相对的是屏幕的坐标。5、父控件被delete时子控件也会析构。但是控件内的成员对象没有setParent为该控件时是不会析构的。6、在从ui界面跳转pushbutton的槽函数中调用重写的函数实际起作用的可能是基类的虚函数改成connect触发clicked信号传递时又能调用重写的函数了。7、deleteLater依赖主事件循环只能在主事件循环中使用如果主事件循环结束了则不执行。因此如果在主对象的析构函数中使用deleteLater则不执行导致内存泄露。8、quint8 arr[3]; sizeof(arr)为整个数组的长度即sizeof(quint8)*3。9、windows下使用延时函数包含#includeunistd.h再调用msleep()。10、setText()中输中文乱码将.cpp文件中的所有代码剪切将该文件转编码为utf-8再将剪切的代码粘贴回去保存。11、QPicmap针对屏幕进行了优化和平台相关不能对图片进行修改QImage和平台无关可以对图片进行修改可以在线程中绘制QPicture保存图片为二进制文件。12、加载.qss文件不生效qss文件应按GB2312编码保存。13、font-size的单位pt或px。14、TCP不能广播和组播。同一个QUdpSocket不能同时点播和组播用两个socket一个socket负责发送给点播地址端口和组播地址一个socket负责加入组播接收组播消息。15、使用UDP组播多个终端使用相同的组播地址D类IP和相同的端口。16、void QTimer::start(int msec)定时器start后先等待msec毫秒才初次触发。17、当所有窗口close时应用关闭。18、Qt开线程的方式有2种使用moveToThread方式开线程时QObject对象new时不可以指定父对象。启动线程后还要只能用signal-slot方式启动QObject对象内的线程处理函数。线程处理函数内部只能做数据处理不允许操作图形界面。但是线程处理函数内部可以QPainter绘图在内存中绘制将绘制好的QImage对象通过signal-slot发送至图形界面。19、connect队列方式槽函数所在线程和接收者一样connect直接方式槽函数所在线程和发送者一样。20、要在界面创建之后再连接送显的信号和槽送显的性质是绘制目标的话建议定时刷新绘制而不是实时绘制不然切主界面的时候不好处理清除目标与新增目标会冲突。21、如果一个组合控件不隐藏但该组合控件中的某个控件hide那它是在原地隐藏鼠标进入该区域时该控件仍能响应鼠标事件。22、度分秒转换是向下取整不能用qRound()直接强转整型。23、事件优先级父窗口的eventFilter 子控件的event 子控件的特定event(如keyPressEvent) 父窗口的特定event。24、样式表的类型选择器(1)表示对所有对象生效{…}(2) 如果几种类型设置样式相同可以用逗号简写QPushButton, QLabel{…};(3) 指定某个特定控件用#QPushButton#btn1{…}(4) 根据属性设置样式QPushButton[flat“true”]{…}(5) 表示对直接后代对象生效儿子的儿子就不生效QFrameQPushButton{…}对所有的后代生效用空格QFrame QPushButton{…}。25、样式表的子控件选择器子控件加前缀::QCheckBox::indicator{…}。26、样式表的状态选择器状态加前缀:QCheckBox:hover{…} QCheckBox::indicator:hover{…}。27、background-image贴图不可缩放border-image贴图可缩放image贴图可缩放且只有image可以调整图片位置用image-position设置。border-image贴图覆盖background-image而image贴图又在border-image之上。避免图片缩放失真贴svg图片。28、qrc文件将图片、txt等文件以二进制形式加入exe这样发布程序就不需要附带相关文件避免泄露源码。29、建议使用QListView/QTableView/QTreeView配合QFileSystemModel使用而不是使用QListWidget/QTableWidget/QTreeWidget这样界面的性能更好更不容易卡顿。30、setStyleSheet用多了很容易造成界面卡顿要尽可能降低触发频率。31、一次信号触发多次槽函数可能存在多次connect。32、将QByteArray数据按指定编码转为QString文本tounicode()将QString文本按指定编码转为QByteArrayfromunicode()。33、关父窗口时要hide子窗口否则子窗口会到主界面后面或者将子窗口设为模态。34、浮点数转整数会丢失精度double a 74.49; int b a * 100;b为7448改为int b round(a * 100)35、x86架构windows,macOS,Linux、龙芯架构下char为有符号的(-128 ~ 127)arm架构飞腾下char为无符号的(0 ~ 255)因此不能依赖char的默认符号性。传数值时应明确改成singed char或unsigned char。36、Qt工程文件夹命名不能带()否则会报错Qt [sub-xx-make_frist-ordered]Error255。37、重写xxEvent()事件时最后要加上XX::xxEvent(event);使事件继续传递。38、如果定时器只在当前线程使用且希望省心建议指定父对象 new QTimer(this) 。如果定时器需要跨线程工作比如移到子线程去执行耗时任务建议不指定父对象配合 moveToThread 使用并在析构时手动 delete 。