QT常见问题汇总

前言

下面是利用VS+QT在开发上位机出现的一些问题,为了方便后续开发中能快速找到这些问题的解决路径,所以写在这里,方便查找。

QT美化类

1. 在VS+QT环境下中文乱码的问题

这个问题是在我利用一个按钮控件来打开一个串口,在没有串口时需要弹出一个“串口未找到,请重试!”的串口提示,于是我在代码里写了如下语句:

QString serialport_name = ui.comboBox_serialport_num->currentText();
if (current_name.isEmpty())
    {
    	qDebug() << "串口未找到,请重试!" << endl;
        QMessageBox::critical(this, tr("错误"), tr("串口未找到,请重试!"), QMessageBox::Ok, QMessageBox::NoButton);
        return;
    }

在编译运行时我按下打开按钮时却出现界面提示:
串口未找到,请重试
同时,在VS调试输出界面也是乱码:
Debug输出乱码
显然这不是想要的输出结果,目前解决方法也很多,这方法目前也是我在用的就是在其头文件加上“#pragma execution_character_set(“utf-8”)”语句,加上后问题解决。
修改后
在这里插入图片描述

2.改变Combox类下拉框的长度

我利用Combox来显示串口号,于是做了一个定时任务来获取目前插在电脑的外设设备,然后放在该控件中,代码如下:

void MainWidget::slot_deal_serialport_timeout_deal()
{
    static QStringList oldstringlist;
    QStringList newstringlist;

    foreach(const QSerialPortInfo &serial_info,QSerialPortInfo::availablePorts())
    {
        //qDebug() << "Name        : " << serial_info.portName();
        //qDebug() << "Description : " << serial_info.description();
        //qDebug() << "Manufacturer: " << serial_info.manufacturer();
        newstringlist += serial_info.portName();
    }
    
    if (oldstringlist.size() != newstringlist.size())
    {
        oldstringlist = newstringlist;
        ui.comboBox_serialport_num->clear();
        ui.comboBox_serialport_num->addItems(newstringlist);
    }
}

主要思想就是timeout一到就扫描所有可用端口,如果发现跟上次扫描出来的不一致,就重新添加到Combox控件中,运行后显示如下:
在这里插入图片描述
但是,这个三个可用端口有一个设备是不适用于用做串口收发的,COM37(J-link设备):
在这里插入图片描述
所以我需要我的Combox控件不仅要显示端口号,还需要显示该端口的描述,因此我将这行代码进行修改:

	//将
	newstringlist += serial_info.portName(); 
	//改为
	newstringlist += (serial_info.portName() + " # " + serial_info.description());

修改后再看是这种效果:
在这里插入图片描述
虽然能显示描述了,但是显示不完整,并且我只加宽该控件界面也将变得不完整:
ui.comboBox_serialport_num->setFixedWidth(160);
在这里插入图片描述
在这里插入图片描述
因此,我需要在原基础上只改变下拉框的宽度,方法如下

#include <qabstractitemview.h> //需要包含该头文件
//将
ui.comboBox_serialport_num->setFixedWidth(160);
//改为
ui.comboBox_serialport_num->view()->setFixedWidth(160);

修改后效果如下:
在这里插入图片描述

工程环境问题

1. 找不到ui.XXX.h文件

在创建完工程后,我们需要调用UI界面的控件,但是会提示没有“ui.XXX.h”的文件提示或者无代码行提示,所以你需要将该文件添加到工程中,以debug为例:
Header Files> 添加 >现有项>添加文件
在这里插入图片描述
在当前工程的目录下的\x64\Debug\uic,点击添加(如果没有需要先编译一次才会出现)
在这里插入图片描述
添加完后代码行就会提示ui界面下的控件了(如果没还是没有提示就关闭工程重新打开)。
在这里插入图片描述

2. 找不到"自定义的.h"文件

解决方法:右键工程(不是解决方案!),然后找到属性打开
在这里插入图片描述
在属性页中找到C/C++>常规>附加包含目录点击编辑
在这里插入图片描述
在附加包含目录中新增目目录,目录位置即是报缺少该文件的文件目录,点击确认后解决该问题。
在这里插入图片描述

后续我也将会持续更新在开发中遇到的问题…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值