QT常见的一些错误

一.Pro文件中一些使用语法

1.指定头文件和C文件路劲

INCLUDEPATH +=include/SysTem
DEPENDPATH  +=include/SysTem

//指定资源文件

RESOURCES += \
    myico.qrc

定义变量和访问变量

//定义变量
PRODIR=Recorder
//访问的时候要加$$
DESTDIR =$$(TRAINDEVHOME)/bin/$$PRODIR

//访问系统环境变量,TRAINDEVHOME是环境变量

//访问的时候要加$$
DESTDIR =$$(TRAINDEVHOME)/bin/$$PRODIR

//message访问也要加$$

message($$CONFIG)
message($$DESTDIR)
message($$(TRAINDEVHOME))

2.区分linux和windows

//根据不同的系统环境设置不同的输出路劲

win32{
DEFINES +=WIN32_FLAG
OBJECTS_DIR =$$(TRAINDEVHOME)/obj/$$PRODIR
DESTDIR =$$(TRAINDEVHOME)/bin/$$PRODIR
}
unix{
DESTDIR =$$(TRAINDEVHOME)/linuxbin/$$PRODIR
}

3.不同的编译器识别方法,依靠

# 给对应的编译器的qmake传额外参数来定义,
# 比如传"DEFINES+=Arm_FALAG" 表示在PRO定义Arm_FALAG,在Qmake的时候要带引号

下面 qt-Arm-5.6.3这个编译器传送了额外参数"DEFINES+=Arm_FALAG",说明使用这个编译器的时候会定义"Arm_FALAG"这个变量
在这里插入图片描述
编译的时候可以根据编译器条件编译代码

void CMD_SetScreenSave(int brightness)
{
#ifndef Arm_FALAG
    return ;
#endif

    if(brightness>255){
        brightness=255;
    }else if(brightness<0){
        brightness=0;
    }
    QString Lightness=QString::number(brightness);
    QProcess::startDetached(QString("set_brightness.64 "+Lightness));
}

4 常用的pro文件变量说明

参考链接1
参考链接2
参考链接3

TEMPLATE:定义了工程的编译模式
赋值方式为:TEMPLATE=app
(1) app :建立一个应用程序的makefile,这是默认值,即如果template没有被指定,这个将被使用
(2) lib  :建立一个库的makefile
(3) vcapp : 建立一个应用程序的Visual Studio项目文件
(4) vclib  :建立一个库的Visual Studio项目文件
(5) subdirs  :创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile
TARGET:指定生成的应用程序名
赋值方式为:TARGET = pksystem
DESTDIR:指定生成的应用程序放置的目录
赋值方式为:DESTDIR = destdir,其中,destdir为生成的应用程序放置的目录
DEPENDPATH:程序编译时依赖的相关路径
赋值方式为:DEPENDPATH += . forms include qrc sources
INCLUDEPATH:指定工程要用到的头文件路径,一般包括用户自定义的头文件路径或没有放入系统头文件路径的头文件路径
赋值方式为:INCLUDEPATH += . systeminclude,其中.表示当前目录,systeminclude为系统头文件路径
SOURCES:工程需要的源文件
如:SOURCES += main.cpp mainwindow.cpp
HEADERS:工程所需要的头文件,一般包括用户自定义的头文件或未放入系统头文件路径的头文件
如:HEADERS += mainwindow.h
FORMS:工程要用到的ui文件(ui文件时用Qt designer生成的)
如:FORMS += mainwindow.ui
LIBS:加载库文件
赋值方式为:LIBS+= -L/usr/local/lib -lm
或者  LIBS += /usr/local/libm.so
UI_DIR:UIC将ui转化为头文件所存放的目录
RCC_DIR:RCC将qrc文件转化为头文件所存放的目录
MOC_DIR:MOC命令将含Q_OBJECT的头文件转换为标准的头文件存放的目录
OBJECTS_DIR:生成的目标文件存放的目录
DEFINES:定义编译选项,在编写程序时可以使用#ifndef xx_xxx_ ...
RC_FILE :程序中所用到的图片等资源文件
RESOURCES:加载要用到的资源*.qrc文件
如:RESOURCES += image.qrc
CODECFORSRC:源文件编码方式
如:CODECFORSRC = GBK
TRASHLATIONS:加载要用到的语言翻译*.ts文件
CONFIG:告诉qmake应用程序的配置信息

(1)可以用来指定是生成debug模式还是release模式,也可以都生成
CONFIG += debug_and_release
CONFIG(debug,debug|release){
TARGET= hello
DESTDIR= ./debug
}else{
TARGET= hello
DESTDIR= ./release
}

(2)可以用来打开编译器警告(warn_on输出尽可能多的警告信息)或者关闭(warn_off -编译器会输出尽可能少的警告信息)

(3)可以用来配置要Qt加载库,例如如果要用到Qt的多线程,则:CONFIG+=qt thread

(4)要运行控制台 console:CONFIG +=console
 平台信息:win32和unix
QT是跨平台的,所以我们在不同的平台上用同一个pro文件,这要加入有关平台的信息。windows平台是win32,Linux平台是unix。
例如在Windows和Linux的动态库文件格式是不一样的,一个是lib文件一个是so文件:
win32:LIBS+= ./mitab/mitab_i.lib   
unix:LiBS+= ./mitab/libmitab.so
再如:
win32{SOURCES+= hello_win.cpp //win平台}   
unix{SOURCES+= hello_linux.cpp //unix/linux平台}

变量解析符号$$
可以通过在其它任何一个变量的变量名前加$$来把这个变量的值分配给当前的变量
如:MY_DEFINES= $$DEFINE ,将DEFINE的值分配给MY_DEFINES

二.在QT中使用VS编译器的时候

1. VS找不到stddef.h

VS找不到stddef.h 添加路劲到INCLUDE环境变量,前提是有该路径
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt

2. VS找不到ucrtd.lib

VS找不到ucrtd.lib 添加路劲到LIB环境变量,前提是有该路径
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17134.0\ucrt\x86 这里是32位的

3.编码要求

在VS编译器中要使用UTF8-BOM编码,在MinGW编译器中要使用UTF8编码,否编译会错误。

二.lade表达式使用方法

    QPushButton *btn2=new QPushButton(&w);
    
    QObject::connect(btn1,&QPushButton::clicked,
                     [&]()
    {
   //表达式;
    }
                     );

三.线程常见的错误

自定义子线程 当使用定时器是 在子线程类中最好在堆中实例化,在析构的时候需要停止定时器(可以不停),
然后释放定时器,然后结束线程,如果是在栈中实例化的,那么析构的时候绝对不能释放,否则程序结束时会出现段错误

自定义的子线程类在主线程使用时,必须在堆中实例化,然后用delete释放,而不是用QT提供的,否则程序退出出现段错误或者线程无法正常结束

四.Qt使用Vs2017找不到CDB调试器,无法Debug调试解决

解决参数链接

五.Qt使用使用VS编译器和VLD来检测内存泄露出现The CDB process terminated

解决方法:将VLD的bin目录的动态库路劲和lib目录的库路劲添加到环境变量在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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 ``` 以上是一些常见QtLinux 下运行时可能遇到的错误及其解决方法,希望能帮到你。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值