【Qt】常见问题

1.存在未解析的标识符

将build文件夹删掉重新编译。

2.左侧项目目录栏无法删除已添加项目

打开目标项目上一级的pro文件,将目标文件名字注释或者删除掉,最后保存,qt就会自动更新,将该项目隐藏掉。

3.在qt creator下添加槽函数出现no documents matching “ui_xxx.h”,不能添加信号和槽

【Qt】常见问题_第1张图片
文件名大小写不一致
【Qt】常见问题_第2张图片

4.未找到xxx.obj

img
出现该问题原因是调用了一个只声明没实现的函数(头文件声明了,源文件没实现)

5.指针值为0xfeeefeee

OXFeeeFeee指针的含义_0xfeeefeee-CSDN博客

此值的含义为: 此指针指向的位置已经被释放了, 但释放后,又错误的重新调用了这个无效指针。

0xfeeefeee的含义为: 指针指向的空间已经被DELETE释放掉,但程序在未给该指针重新赋值前,又错误的调用了这个无效的指针

内存中常见异常值的解释(0xcccccccc 0xcdcdcdcd 0xfeeefeee等)_0xfeeefeee是什么-CSDN博客

6.发送一次信号,槽函数多次触发

QT发射一次信号,槽函数执行了多次的背后思考-CSDN博客

槽函数会被执行多次的问题原因及解决方法_为什么槽函数不能显示多次定义-CSDN博客

1 √Qt::UniqueConnection

目前使用的解决方法是,再绑定信号槽的时候,connect添加第五个参数Qt::UniqueConnection(表示如果该信号以前没连接过,则连接它,返回true,如果以前连接过,则不再连接,返回false)

注意**:该参数对匿名函数形式的连接****无效**

        connect(dynamic_cast<DeviceMainView*>(w),&DeviceMainView::sigShowDeviceToLeft,this,[=](){
            emit sigShowDevicesToLeft();
            SCDebug<<"fff3";
        },Qt::UniqueConnection);

2.disconnect

1 × 在每次connert前先disconnect一次(还是会多次触发)

//1 √ 参数限制 防止槽函数被多次触发
//connect(this,&NewDeviceSettingWidget::sigNavButtonMenuAction,dynamic_cast(w),&DeviceMainView::slotNavButtonMenuAction,Qt::UniqueConnection);

//2 × disconnect 先断开连接 再重新连接 ?还是会多次触发
        
QMetaObject::Connection connectHandler = connect(this,&NewDeviceSettingWidget::sigNavButtonMenuAction,dynamic_cast<DeviceMainView*>(w),&DeviceMainView::slotNavButtonMenuAction);
disconnect(connectHandler);
connect(this,&NewDeviceSettingWidget::sigNavButtonMenuAction,dynamic_cast<DeviceMainView*>(w),&DeviceMainView::slotNavButtonMenuAction);
        

2 ?每次绑定的环境失效前,执行disconnect()函数

每次绑定的环境失效前(如在一个对话框中被绑定,该对话框被关闭则视为失效),执行disconnect()函数,将该绑定解除。

思考:

对话框被关闭,意味着将会调用void Widget::closeEvent(QCloseEvent *event)函数,那么可以在此函数中判断,关闭窗口时,发送信号给connect所在类,然后执行disconnect函数,解除连接关系。

7.debug模式下,运行点击程序会跳到不相干的地方,一直停在此处

原因:历史断点(之前打的断点)问题

解决:删掉所有历史断点就可以了

8 debug 运行 提示ui_xxx.h 不存在

前提删过相关文件 以为重构编译可以重新生成 自定义了路径

【Qt】常见问题_第3张图片
解决:整个文件夹删掉 重构(之前只清空了文件夹,文件夹没有删掉)

9 fatal error LNK1201:写入程序数据库“***.pdb”时出错;请检查是否是磁盘空间不足、路径无效或权限不够…

重新构建时,程序正在运行,关掉程序

10 ? Cannot write file .pri: 另一个程序正在使用此文件,进程无法访问。【 右键添加已存在文件】

【Qt】常见问题_第4张图片

11 q

【填坑】解决“要继续此操作,至少需要一个有效且已启用的储存库”问题_要继续此操作,至少需要一个有效且已启用的储存库-CSDN博客
维护QT添加或移除组件_此操作至少需要一个处于启用状态的有效资料档案库-CSDN博客

12 类名变紫色 应该为红色 相关报错

【Qt】常见问题_第5张图片
原因:前两行宏中间有空格导致
【Qt】常见问题_第6张图片

13 【Debug】LINK : fatal error LNK1104: 无法打开文件“XXX.dll”

重新debug一次就好了

14 【构建】dependent “*.ui” does not exist.

qt构建错误: dependent “*.h” does not exist. - 我来乔23 - 博客园 (cnblogs.com)
【Qt】常见问题_第7张图片

原因:之前添加了该文件后又删除,可能项目文件没有更新,查看所在pro文件后发现没有删除该文件的声明
尝试了重新清除、qmake、构建 还是不可以
解决:pro文件相关代码删除后再编译就可以了。

15 无法解析的外部符号

在这里插入图片描述
原因
所在pro里没有添加对应的依赖库
解决
加上对应的依赖库
【Qt】常见问题_第8张图片

16 【warning】allocating an unneeded temporary container [clazy-container-anti-pattern] 分配不需要的临时容器

【Qt】常见问题_第9张图片
[How to fix foreach warning: allocating an unneeded temporary container -Wclazy-container-anti-pattern
原因

解决

你可能感兴趣的:(C++,qt,开发语言)