qt易错点总结

1.当单元格为空时(而非是被赋值为“”),其item调用text()会报错,因为此时的item()为空指针。
2.ui->tableWidget->setCurrentItem(ui->tableWidget->item(1,1))表示将(1,1)位置处的单元格作为当前所选的,能够成功的前提是item(1,1)不是null.

3.Qt正则表达式防止转义,需要在原来基础上再加一个\.比如"\d"在正则表达式中是真实存在的,在C++字符串中就需要加上"\",保证系统处理后仍保留"\d".

4.如果采用了ui界面文件,自己又在代码里自定义了m_treeWidget对象(非ui下的对象),如果不去setCentralWidget(m_treeWidget),显示出来的树控件的左上角会和窗口的左上角重合,不符合设计准则;而set之后则树控件会成为中心窗口.

5.注意Qt中exist()的使用:当为文件类型时,采用QFile;当为文件夹类型时,采用QDir,否则会出问题的.参考文章:Qt 判断文件、文件夹是否存在的方法_非常道的博客-CSDN博客_qt 判断文件是否存在

6.Qt中的QWidget的close()是槽函数,不是信号. connect中的槽函数必须要用slots声明.

7.貌似很复杂的报错,其实错误很简单.target is not pointer or reference to complete type.  invalid use of incomplete type...  forward declaration of..

说的都是同一个事情,QToolButton类不完整,前向声明了,原因是没有包含该类的头文件.

8.qt中setItem(row, col, new QTableWidgetItem("new"));不要忘记前面的new.

9.qt中的如果想要循环利用变量填充字符串的话,记得一定要把"%1"那句放在循环里,如果放在循环前面,"%1"填充一次后,接下来就不再起到填充字符串的作用了.

for(QString str: strList)

{

  QString strSql = "select * from Table where name = %1";

  QString strNew = strSq.arg(str);

}

10.qt的for(item:  QMap的字典对象),item竟然是,这和python的不一样,python中是.qt中获取键的方法:遍历QMap::keys()

11.qt Creator中没有对选中部分进行替换的方法,全部替换就是真的全部替换了.

12.影子编译指的是编译目录和源码目录不一样.通过影子编译,可以同时进行多个不同配置选项的编译,且互不影响(就像影子之间没有影响)

13.Qt中如果报exe被截断,如果直接编译解决不了,就去删掉这个exe

14.Qt使用signal和slot忘记使用Q_OBJECT

15.当感觉和demo一致,现象不一致时,要一点一点对比过去,有可能存在不一致的地方.比如重写ListWidget的keyPressEvent时,忘记了调用父类的函数了.

16正则表达式和Qt中的正则表达式: \bst\w*\b \\bst\\w*\\b //匹配以st开头的字符串

17.Qt打印char *的地址: qDebug() << &pStr;

18.QT QTableWidget::item() returns nullptr even when widget assigned to it:原因是widget没有分配行和列.

19.CONFIG(debug, debug|release){

这里的{要在上一行,如果换行的话,就起不到效果

20. Qt linux下生成so的项目中, 编译时不需要指定依赖的别的so.但在生成exe的项目中,编译必须指定全部的so.

21. QDialog中捕捉窗口关闭需要使用closeEvent(QCloseEvent   *e).之前尝试重写QWidget的close()函数,没有成功.

22.QString中不可以使用单引号来表示字符串,如果字符串中有双引号,请用\"来做.

23.使用自定义类的QList,需要定义该类的赋值操作符.比如CustomClass &operator=(const CustomClass& mp)
使用自定义类的QSet,需要定义该类的==和qHash()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingLife99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值