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();
类似错误:
原因:在代码文件cpp里定义的函数没有在对应的头文件.h里声明
原因:在代码文件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
#include "mainwindow.h" //后生成的ui要自己手动添加这一行
int main( int argc, char **argv )
{
QApplication a( argc, argv );
MainWindow w;//主意大小写与对应的ui、cpp文件里面要一致
w.show();
return a.exec();
}