Qt问题记录

纯菜鸡,最近在用Qt,随时记录一些自己遇到的(低端)问题与解决方案。

1.Qdialog关闭时候不调用析构函数

        因为子窗体的构造函数中初始化了父窗体parent,当关闭子窗体时不会调用析构函数,只有关闭父窗体时,才会调用子窗体的析构函数。

        若想让dialog关闭时候也调用析构函数,则需要添加声明如下:

setAttribute(Qt::WA_DeleteOnClose);

2.只在关闭时候莫名其妙出现程序异常终止(未解决)

        看网上教程是说

#在main.cpp文件里,如果用MainWidget w;
#w.show;在点击退出按键关闭窗口时,会出现“程序异常终止”的提示。
#如果换成MainWidget *w = new MainWidget; w->show;  再次点击退出时,则不会出现这样的警告。

        但在实际运行中还未解决。

        2023/03/02更:后来发现是因为自己在析构函数中不管三七二十一直接全部delete导致,虽然退出界面发生段错误也一样是程序结束,但总归是不好。应改为如下:

if(xxx!=NULL)
xxx=NULL;

if(yyy!=NULL)
yyy=NULL;

if(zzz!=NULL)
zzz=NULL;

还有一种情况即,使用指针创建qXXX* xxx; 时,如果不指定为nullptr,则此指针并非空指针。 

3.对于cloudcompare加入插件来说,需要写成widget或其他格式。

        一个程序只能有一个Mainwindow,之前写了一个小程序想当成插件,却一直报错,最后发现是写成了MainWindow形式.....,并且app->exec()会阻塞程序。

        exec阻塞过后,程序会退出,如果想建立连续选择、弹窗模式,可以使用show()与hide()组合,而不是exec阻塞。

4.QProcess只有在start后才可以调用close

        在析构函数中关闭Process过程中疯狂报段错误,最后发现必须先start后才可以使用close。

5.Qstring使用section切割

        使用section函数

QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const
   sep表示切割的字符,start与end分别为切割字符段选取的开始与结束索引

        例如将Hello,world,qt,creator 这句,使用','切割,将其切分为4块,对应索引为0,1,2,3 分别对应Hello  world  qt  creator  若section(',',0,1); 输出则为Hello,world

6.Windows下qtcreator不能运行多个相同程序

转自:QtCreator同时运行多个程序_qt 启动多个exe_mahuifa的博客-CSDN博客

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值