首页 > 其他分享 >在vs2022中对于QT5的简单使用

在vs2022中对于QT5的简单使用

时间:2022-11-26 23:12:49浏览次数:66  
标签:Widget QT5 qt mainLayout void relevant vs2022 简单 include

目录

背景

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_26399665/article/details/52669739
请添加图片描述

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

这里可以贴一下代码

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_39684284/article/details/79025291?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTRate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTRLISTRate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2

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

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

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

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

来聊聊吧,我们也在更新QT系列
image

标签:Widget,QT5,qt,mainLayout,void,relevant,vs2022,简单,include
From: https://www.cnblogs.com/ltgybyb/p/16928594.html

相关文章

  • VS2022安装
    1、下载链接:VisualStudio2022 2、安装位置:不放C盘; 3、VS下载0kb/s的问题 : CSDN链接 可以改DNS地址来加速网络;223.5.5.5   223.6.6.6 4、VisualStudi......
  • 剑指offer——Day16 排序(简单)
    Day162022.11.22排序(简单)45.把数组排成最小的数自己实现没有思路题解也是比较大小,只是这个比较大小的方法是两个数字字符串stringx和stringy,如果x+y<y+x,说明x应该......
  • 二叉树的简单学习
    【概念】先序:根、左、右中序:  左、根、右后序:  左、右、根【代码】packagecom.company;importjava.util.*;importjava.util.stream.Collectors;/***二叉树节......
  • sonarqube的部署与代码质量简单测试案例(第四周)
    SonarQube介绍1、SonarQube是一个用于代码质量管理的开放平台,通过插件机制实现对不同语言的源代码质量扫描,如go、python、java、python等代码扫描并生成扫描报告,官方网站......
  • 华为云会议,让云上办公变得简单高效​
    ​如今,远程视频会议在企业数字化转型中的重要性日益凸显,远程办公已成为一种新潮流。基于华为30年音频技术的积累,华为云会议通过结合全系列硬件终端,以其稳定高效的软硬件配置......
  • 双十一优惠持续,华为云会议让沟通简单化​
    ​临近双十一尾声,各大品牌的优惠仍然层出不穷,对于专为企业提供云服务的优质品牌华为云也不例外。其中,华为云会议便是较为火热的一个产品,不仅在价格方面有优势,而且还具有很好......
  • vue3中watch监听不是你想的那样简单
    vue3中watch监听数组,数组变化后未触发回调今天发生了一个很神奇的现象,就是我使用watch监听数组时。被监听的数组已经发生了变化。但是没有触发回调操作。当时的我感到很疑......
  • vue3中watch监听不是你想的那样简单
    vue3中watch监听数组,数组变化后未触发回调今天发生了一个很神奇的现象,就是我使用watch监听数组时。被监听的数组已经发生了变化。但是没有触发回调操作。当时的我感到很疑......
  • MySQL 简单造数
    造数背景主要造出一张时间字段的相关的数据,时间字段不能是一个固定值,数据范围需要随机分散在90天内的。构建测试表--测试表结构CREATETABLE`demo`.`order_info`(......
  • 让你的Python代码更干净只需简单一步
    你可以将这两个文件拷贝到自己的项目根目录中,然后执行一次pre-commitinstall,这样每次提交代码的时候,都是干净的代码,是不是很方便?说起来容易做起来难,我们都知道代码可读性......