C++| VS+QT快速入门

C++开发QT的方式

C++开发QT有两种方式,一种是VS+QT,还有一种是QT Creater。

QT Creater的用法已经在C++学习| QT快速入门中写过了,本篇主要是说一下VS+QT的使用方法,以及该方法和QT Creater的区别。

VS+QT和QT Creater的区别

主要是讲一下VS+QT和QT Creater大体上的区别,一些具体的操作细节区别,会在下一部分的VS+QT使用上详细讲解。

VS+QT:

  • 优势:
    • VS IDE加持,写代码和Debug都很方便。
    • 熟悉过VS的话,上手写代码,安装配置什么得很方便。
  • 劣势:
    • 修改Ui文件之后,可能要先对Ui文件进行编译。
    • 提示功能不如Qt Creator那么全。
    • 对汉字支持不太好,需要做别的处理。

QTCreater:

  • 优势:
    • 实现Ui和代码快速切换。
    • 项目管理方便,可以添加pri等来管理子模块。
    • 新手上手QT来说比较友好。
    • 对汉字的支持更好。
  • 劣势:
    • Debug困难。
    • 项目需要配置一些文件的时候,会比较麻烦。

我个人体验来说,需要配置很多环境文件的项目用VS+QT比较合适,尤其是从原本VS编写的项目迁移的时候。最近需要把mfc项目重构,希望重构后界面能好看点,于是想要用QT。但是,当编写到需要配置一些环境时候,网上QT Creater相关的很少,VS相关的很多。QT Creater配置cuda等各种环境文件,很麻烦,这时候如果用VS+QT,那么配置这些东西就回到和原来项目相同的模式,只不过界面编写用QT。

VS+QT使用:入门案例——加法器

关于VS配置QT的内容,在之前我的另一个篇博客QT下载安装、VS配置QT就讲解过了。

创建项目

打开VS,选择新建项目的时候能够看到QT选项,会有很多种QT项目选择,根据自己需要看介绍选择即可。

因为我主要是使用QT做桌面应用,就选择QT Widgets Application进行创建。

在这里插入图片描述
会进入QT应用程序创建的界面。

在这里插入图片描述
后续剩下步骤,命名好,默认的就行。

在这里插入图片描述

UI文件

项目文件介绍:新建项目后,可以在解决方案中看到所有相关的文件,其中的ui是QT界面相关的文件,qrc则是QT资源相关管理文件。

在这里插入图片描述
跳转QT Designer:通常双击即可跳转到QT Designer进行可视化编辑界面,但是可能会遇到双击打不开的情况,例如下图。

在这里插入图片描述
遇到打不开的情况可能是打开方式出现了问题,可以常试以下两种方法。

第一种方法,打开方式设置为QT Designer为默认值。

在这里插入图片描述
如果QT Designer设置为了默认值还是不行,可能是QT Designer的路径有问题。

第二种方法,自行添加一个新的QT Designer,路径为自己安装QT路径下的msvc后面bin中QT Designer的路径(我的路径为E:\QT\6.6.1\msvc2019_64\bin\designer.exe),然后在给个不同于QT Designer的友好名称,我给了个QT Designer的中文翻译“QT设计师”作为友好名称。

在这里插入图片描述
这时候双击ui文件就会自动跳转到QT Designer了,界面和QT Creater的设计界面差不多。

在这里插入图片描述

运行项目

直接运行即可。

在这里插入图片描述

如果报错没法找到QWidget等QT相关的类,可以右键项目->属性->C/C+±>常规->附加包含目录,添加QT的include路径(我的路径为E:\QT\6.6.1\msvc2019_64\include)。

注意自己的msvc版本,由于我安装的QT6配置的是msvc2019版本,意味着VS最少要2019,所以我原本一直用的VS2017没法运行成功,我又重新安装了VS2022。VS版本换了后,QT相关的配置方案和之前是一样的没有变化。

编辑UI界面

在QT Designer编辑加法器的UI界面,通过拖拽控件到界面上,最终形成如下界面。不同控件可以双击对象检查器中控件对象修改objectname,来让对象名字更加直观,方便代码操控。

在这里插入图片描述

代码交互编写

思路:为加法按钮添加槽函数,QT Creater中可以用“转到槽”来完成自动关联,但是VS+QT是没有“转到槽”的选项的,所以需要用connect手动关联槽函数。

可能会遇到的几个问题

  • VS中代码不识别QT里面的控件对象名字:先点击ui文件右键选择“编译”,再点击项目右键选择“重新扫描解决方案”,注意不是“重新生成解决方案”。
  • connect手动关联失效:要把槽函数写在“public slots:”后面,不能像QT Creater那样只写在“public:”后面。
  • VS+QT操作ui类的成员:ui在VS+QT中是变量,而在QT Creater中是指针,所以操作里面的成员的时候,QT Creater用的“->”,而VS+QT用的是“.”。

完整的代码
Test.h

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_Test.h"

class Test : public QMainWindow
{
    Q_OBJECT

public:
    Test(QWidget *parent = nullptr);
    ~Test();
public slots:
    void onAddButtonClicked();// 加法按钮的槽函数声明

private:
    Ui::TestClass ui;
};

Test.cpp

#include "Test.h"

Test::Test(QWidget* parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);// 在QT Creater中,ui是指针只能用->操作。
	this->setWindowTitle("加法器");
	// 手动关联
	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(onAddButtonClicked()));
}

Test::~Test()
{}

void Test::onAddButtonClicked()
{
	// 获取lineedit的数据
	QString a_str = ui.input1->text();
	QString b_str = ui.input2->text();
	// 把QString转为int
	int a = a_str.toInt();
	int b = b_str.toInt();
	// a和b相加
	int ans = a + b;
	// 设置结果显示在label上
	ui.label->setText("结果:" + QString::number(ans, 10));
}

运行结果
在这里插入图片描述

中文显示乱码

产生原因:Qt creator是跨平台的,所以编码格式默认为utf-8格。但是VS不是跨平台的,是windows下的原生IDE,windows的系统编码为GBK格式。VS打开Qt creator编写的文件的时候,按照utf-8编码,gbk来解码,编码和解码不对应,需要做得就是统一两者的编码。英文不会乱码,是因为UTF-8和GB2312在单字节字符部分是兼容的。

解决方案:网上相关的方法有很多种,例如修改高级保存选项为“utf8带签名:、添加“#pragma execution_character_set(“utf-8”)”在头文件、安装扩展Force URF-8 with BOM等。这些方法我在VS2022+QT6上面试过都不行,但是后来我用了安装扩展Format on Save for VS2022成功。
在这里插入图片描述
安装后在工具->选项中,进行设置utf8。
在这里插入图片描述

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值