Qt常见错误

Qt5.13.2版本

编译时出错:类似的,如:Failure to find: CONFIG、Failure to find: c++11, [main.obj] Error 2, 等等.

错误原因:仔细查看pro文件,并不缺少相关配置,只是在修改pro文件时,在之前的某行有多余的字符,“\”,如图

error: No rule to make target '***’,needed by 'debug/temp.exe'.  Stop.

编译时出错:error adding symbols: File format not recognized

错误原因:连接库错误,比如,只有MinGW的库(.a库),没有Arm的库(.a),在编译到Android时就会出现这个提示。

解决问题:

warning: zero as null pointer constant(0作为空指针常)

警告原因:C++中,使用0表示空指针,
C++中 不能将void *类型的指针隐式转换成其他指针类型,为了解决空指针,C++中引入0来表示空指针

但是C++11中,使用nullptr来表示空指针

解决问题:QT用的是C++11,所以用nullptr来表示空指针

函数的声明、定义、和调用 

错误:QObject::connect: No such slot MainWindow::getHost() in ..\net\mainwindow.cpp:19

伴生错误提示:RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly

原因:关键词“slot”;在头文件(.h)里没有声明、或格式不对,正确的例子,写在对应的头文件里:

private slots:
          void getHost();

类似错误:

  • error: out-of-line definition of 'openFile' does not match any declaration in 'MainWindow'

原因:在代码文件cpp里定义的函数没有在对应的头文件.h里声明

  • error: undefined reference to `MainWindow::closeFile()'

原因:在代码文件cpp里没有定义该函数,但是在对应的头文件.h里有声明

汉字乱码:不要使用QString,也不需要在头文件里添加编码的声明。

例如,设置菜单名称:actSaveAs->setText(QString::fromLocal8Bit("另存为"));程序运行时“另存为“三个字显示乱码。

改为:actSaveAs->setText("另存为");

或者:在main里添加“QTextCodec::codecForName("UTF-8");”

int main(int argc, char *argv[])

{//使用汉字编码UTF-8

QTextCodec *codec = QTextCodec::codecForName("UTF-8");

QTextCodec::setCodecForLocale(codec);

QApplication a(argc, argv);

MainWindow w;

w.show();

return a.exec();

}

原因:举个简单易懂的例子:一个汉字编码由两个字节构成,高8位和低8位,如果颠倒了显示乱码。

还有就是编码和字库不对应,当然就显示乱码了。

窗口调用方法和常见错误

“QDialog”: No such file or directory
解决方法:在pro文件中添加:QT += widgets

原因:新建工程时没有选中UI,后期添加时,用了对话框相关的内容,比如QDialog,但没有在PRO文件里包含widgets

自定义窗口(ui)的显示:

.pro文件:在新建主窗口文件(mainwindow)时自动添加或修改
QT += quick
QT += widgets //后生成和添加的ui要手动添加这一行
QT += network
HEADERS += libusb.h\mainwindow.h

main.cpp
#include <qapplication.h>
#include "mainwindow.h" //后生成的ui要自己手动添加这一行

int main( int argc, char **argv )
{
QApplication a( argc, argv );
MainWindow w;//主意大小写与对应的ui、cpp文件里面要一致
w.show();
return a.exec();
}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Linux 下使用 Qt 开发时可能会遇到各种错误,以下是一些常见错误及其解决方法: 1. 错误信息:cannot connect to X server 这个错误通常是由于 SSH 连接远程服务器时没有启用 X11 转发导致的。可以使用以下命令启用 X11 转发: ``` ssh -X user@hostname ``` 2. 错误信息:error: ‘nullptr’ was not declared in this scope 这是因为 C++11 的 nullptr 关键字在较旧的编译器中不被支持。可以使用以下方法解决: 在项目的 .pro 文件中添加以下行: ``` QMAKE_CXXFLAGS += -std=c++11 ``` 3. 错误信息:undefined reference to `vtable for ClassName` 这个错误通常是由于类定义中声明了虚函数,但是没有在实现中提供对应的实现导致的。可以在类定义中声明虚函数后,在实现中提供对应的实现即可。 4. 错误信息:error: no matching function for call to ‘functionName’ 这个错误通常是由于函数调用时传递的参数类型与函数声明的参数类型不匹配导致的。可以检查函数声明和函数调用的参数类型是否一致。 5. 错误信息:libQt5Core.so.5: cannot open shared object file: No such file or directory 这个错误通常是由于 Qt 库路径没有正确设置导致的。可以使用以下命令设置 Qt 库路径: ``` export LD_LIBRARY_PATH=/path/to/qt/lib:$LD_LIBRARY_PATH ``` 以上是一些常见Qt 在 Linux 下运行时可能遇到的错误及其解决方法,希望能帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大叔山

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

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

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

打赏作者

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

抵扣说明:

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

余额充值