在vs2022中对于QT5的简单使用

背景

vs2022配置了QT5.14.2,

然后尝试手写了一下qt程序,

问题

遇到的问题如下

1.新建程序的时候,如果选择了类型为widget程序vs就默认启用qt creator的接口,生成ui文件

而我不想用ui直接手写,

所以需要创建qt empty application

2.创建了项目之后,引用

#include <QWidget>

显示无法打开此文件,意思就是找不到这个库

然后也就是我们得配置一下

点击项目 右键 属性 在vc++中的 包含目录和库目录,将qt的对应版本的include和lib给包含进来

请添加图片描述

3.然后再配置了vs配置了qt的前提下,勾选qt的设置,选择需要的qt Modules

请添加图片描述

一个窗体程序,一般选择这几个就行,

这个附加上qt5 各个模块都是干嘛的

参见下面的链接

https://blog.csdn.net/qq_2639...
请添加图片描述

然后我们就可以开始写程序了

这里可以贴一下代码

width.h

#pragma once
#ifndef WIDGET_H
#define WIDGET_H

#include <qwidget.h>
class Widget : public QWidget
{
    Q_OBJECT;
public:
    Widget(QWidget* parent = 0);
    ~Widget();

private:
    void setupUI();
    void openFile();
    void outputFile();

private slots:
    void slot_testBtn_clicked();
};



#endif //WIDGET_H

widget.cpp

#if _MSC_VER >= 1600    // MSVC2015 > 1899,    MSVC_VER = 14.0
#pragma execution_character_set("utf-8")
#endif
#include "widget.h"
#include <qboxlayout.h>
#include  <qpushbutton.h>
#include <qdebug.h>
#include <qfiledialog.h>
#include <qmessagebox.h>
#include <qfile.h>
#include <qtextedit.h>
#include <iostream>
using namespace std;

Widget::Widget(QWidget* parent) :QWidget(parent) {
    setupUI();
}
Widget::~Widget(){}

void Widget::setupUI() {
    QVBoxLayout* mainLayout = new QVBoxLayout;
    mainLayout->setMargin(0);
    mainLayout->setSpacing(0);
    QPushButton* testBtn = new QPushButton("选择");
    //QTextEdit textEdit = new QTextEdit(this);
    connect(testBtn, SIGNAL(clicked(bool)), this, SLOT(slot_testBtn_clicked()));
    mainLayout->addWidget(testBtn);
    mainLayout->addStretch();
    this->setLayout(mainLayout);
}

void Widget::openFile() {
    QString path = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Text File(*.txt)"));
    if (!path.isEmpty()) {
        QFile file(path);
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
            QMessageBox::warning(this, tr("Read Fifle"), tr("Cannot open file:\n%1").arg(path));
            return;
        }
        qDebug() << file.fileName();
        file.close();
        
    }
    
}

void Widget::outputFile() {
}

void Widget::slot_testBtn_clicked() {
    qDebug() << tr("点击选择按钮");
    this->openFile();
}

main.cpp

#include "widget.h"
#include <qapplication.h>

int main(int args, char* argv[]) {
    QApplication a(args, argv);
    Widget w;
    w.resize(960, 640);
    w.show();
    return a.exec();
}

然后在编译执行中我们会发现,生成的窗体上的中文是乱码,并且在控制台的输出也是乱码

俨然这是vs乱码问题

这里需要解决两个点,

1.首先把所有用到的文件 保存为UTF-8(BOM)格式

2.在使用到中文的.h头文件和.cpp源文件中 最上面加上这段代码

#if _MSC_VER >= 1600    // MSVC2015 > 1899,    MSVC_VER = 14.0
#pragma execution_character_set("utf-8")
#endif

就可以解决乱码问题

第一步还有个小问题就是,我们如何改变vs中文件的保存格式,因为默认是按照系统默认来保存的

这里需要用到“高级保存设置”,一般在正常的菜单没有,参考这篇博客

https://blog.csdn.net/weixin_...

将“高级保存设置”放到编辑中

然后将所有文件的保存格式改为
请添加图片描述

然后即可正常编译,正常显示中文

请添加图片描述
请添加图片描述

来聊聊吧,我们也在更新QT系列
gzh.png

1 声望
1 粉丝
0 条评论
推荐阅读
Vue3+vite项目在局域网内通过ip在手机端访问
使用vite启动项目后,想在手机端访问项目,此时是访问不到的在网上查阅了相关内容,小结一下1.修改vite.confifg,js(未使用ts,使用的修改vite,config.ts)

乐码客阅读 201

Visual studio配置第三方库的步骤总结
1 设置第三方库的头文件目录(Header文件目录),有两个位置可以设置,两者效果相同,二选一即可。VC++ Directories中的include directories 或者 C/C++==&gt;General==&gt;addition include directories。

楚知行阅读 644

文章汇总
Qt 项目【推荐】基于百问网 IMX6ULL 的综合性桌面系统 DBoS【推荐】Notepad 实例开发【推荐】简单考勤【推荐】自定义组件合集【推荐】简单录音,一个简单的小帮手【推荐】简单桌面【推荐】视频播放器【推荐】设备...

TianSong阅读 622

[Qt学习笔记]Qt使用mxDraw插件实现CAD二维图的显示和修改
项目开发中可能出现需要显示和加载dwg格式工程图或CAD绘图操作的功能时,需要调用CAD插件实现绘图操作或工程图展示。这里使用了MxDraw的CAD插件,其动态库需要在其官网上下载注册使用

coder_Alaric阅读 547

在 Visual Studio 中更好地进行搜索
当在 IDE 中查找特定的代码文件、类、方法或者功能、选项,找到它们并不总是那么容易。有多种搜索方式,到底该选择哪一种才最便捷呢?新的“一站式”搜索(All-In-One Search)将代码和功能搜索合并到同一个 UI 中...

微软技术栈阅读 436

封面图
无需离开 Visual Studio 即可编写 Markdown
当您想要格式化代码但又不想牺牲易读性时,Markdown 是一个很好的解决方案。GitHub 将其用于自述文件,我们将其用作 Visual Studio 文档的标准。之前收到了不少来自开发者的反馈,大家希望在 Visual Studio 中使...

微软技术栈阅读 431

封面图
独立产品灵感周刊 DecoHack #043 - 互联网从业者的灵感数据库
本周刊记录有趣好玩的独立产品设计开发相关内容,每周发布,往期内容同样精彩,感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到,建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。

ViggoZ阅读 329

封面图
1 声望
1 粉丝
宣传栏