VS2022+qt5.12.3环境配置以及项目创建

下载和安装Qt

(1)通过这个路径下载https://download.qt.io/archive/qt/5.12/5.12.3/

下载完成后,点击运行,如果有Qt账号,直接登录就可以了,如果没有可以在下面注册一个,然后点Next(如果不想填写,请先断网,然后重新打开安装程序)  
选择如下组件:

下一步,然后等待安装完成。

 配置Qt路径

找到自己安装的Qt的路径,进入后找到如下几个bin的位置并依次添加到系统环境变量的path中去:

 

 下载Qt tools

在Vs的扩展->管理扩展中搜索Qt找到要下载的扩展工具(下载好之后需要重新打开 Vs)
下载好之后记得关闭Qt Tools的自动更新(如下图),否则整个项目都会出现奇奇怪怪的错误。

 

 添加版本:扩展->qt vs tools->Options

  注意,如果在创建qt项目的时候提示register at least one qt version,一定看看default这里有没有选中。

 创建Qt项目

 构造一个Qt Widgets项目,首先,依次按照下图建立一个新的Qt项目,一般都继承自QWidget,这是Qt所有窗口类的基类。

按照下图顺序:

 

 至此,项目创建完成。

 

窗口基本属性设置&调整

 创建析构函数

在这之前我们先干一件事——写好析构函数以避免内存外溢。

通过如上方式构造的一个窗口类中,一开始就有一个私有成员

乍一看貌似没有指针成员析构与否并不影响,但是在之后添加控件时我们往往以指针的形式来定义它们,这时候挨个析构过去相当麻烦,所以Qt的这个ui变量如果写成指针的形式,然后再在析构中释放ui指针的内存即可自动释放掉该Qt类下的所有指针成员的内存。 

将上述代码修改为:

#pragma once

#include <QtWidgets/QWidget>
#include "ui_qtwidgetsapplication1.h"

class QtWidgetsApplication1 : public QWidget
{
    Q_OBJECT

public:
    QtWidgetsApplication1(QWidget *parent = nullptr);
    ~QtWidgetsApplication1();

private:
    Ui::QtWidgetsApplication1Class *ui;
};

对应的cpp:

#include "qtwidgetsapplication1.h"

QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent)
    : QWidget(parent)
{
    ui->setupUi(this);
}

QtWidgetsApplication1::~QtWidgetsApplication1()
{
    delete ui;
    ui = nullptr;
}

  

设置窗口标题和大小

#include "qtwidgetsapplication1.h"

QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent)
    : QWidget(parent)
{
    ui->setupUi(this);
    
    // 设置窗口标题
    setWindowTitle("测试窗口");
    // 重设大小
    resize(400,500);
}

QtWidgetsApplication1::~QtWidgetsApplication1()
{
    delete ui;
    ui = nullptr;
}

效果:

 中文乱码问题解决

 在这个环境里如果出现了中文乱码,如下图解决:

 然后在.h文件中添加:

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

 

所以这个示例的头文件代码为:

#pragma once

#include <QtWidgets/QWidget>
#include "ui_qtwidgetsapplication1.h"
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
class QtWidgetsApplication1 : public QWidget
{
    Q_OBJECT

public:
    QtWidgetsApplication1(QWidget *parent = nullptr);
    ~QtWidgetsApplication1();

private:
    Ui::QtWidgetsApplication1Class *ui;
};

 

窗口初始位置的移动

 窗口初始生成位置的移动依托于move函数,注意,这是相对于父窗口来说的,按照当前的示例,其父窗口就是电脑屏幕,所以是以屏幕的左上角为原点移动的

#include "qtwidgetsapplication1.h"

QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent)
    : QWidget(parent)
{
    ui->setupUi(this);
    
    // 设置窗口标题
    setWindowTitle("测试窗口");
    // 重设大小
    resize(400,500);

    // x轴向右移动500,y轴向下移动200 
    move(500,200);
}

QtWidgetsApplication1::~QtWidgetsApplication1()
{
    delete ui;
    ui = nullptr;
}

 

 具体坐标系可点击这里

 窗口背景颜色设置

函数原型:

setStyleSheet(const QString &styleSheet);

 

这里设置背景色用到的sheet写法为:"QXx { background-color : QColor;}"

其中:QXx为要设置的控件的Qt基类,比如这个窗口继承自QLabel那就写成"QLabel { backgroung-color : QColor;}"。而QColor指Qt中表示颜色的数值。

其中常用的QColor表示法有三种:

1.使用系统预置颜色

如:"QLabel { backgroung-color : green;}"、"QLabel { backgroung-color : blue;}"等

这里可以用的颜色有:red、green、blue、yellow、gray、black、white、orange、pink、brown、beige(米白色)、aqua(水绿色)、tan(褐色)、silver、gold、skyblue等等

以米白色为例:  

#include "qtwidgetsapplication1.h"

QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent)
    : QWidget(parent)
{
    ui->setupUi(this);
    
    // 设置窗口标题
    setWindowTitle("测试窗口");
    // 重设大小
    resize(400,500);

    // x轴向右移动500,y轴向下移动200 
    move(500,200);

    // 设置背景色
    setStyleSheet("QWidget{background-color:beige}");
}

QtWidgetsApplication1::~QtWidgetsApplication1()
{
    delete ui;
    ui = nullptr;
}

 效果:

 注意:当你写的是不存在的预置颜色会默认设置成黑色

 

使用RGB三原色表示法(rgba(r, g, b))

例:"QLabel { backgroung-color : rgba(174, 221, 129);}"

使用十六进制表示颜色

如:"QLabel { backgroung-color : #3697ad;}"

  

 参考:https://blog.csdn.net/m0_51510934/article/details/122524346

 

posted @ 2023-05-13 10:57  安静点--  阅读(3449)  评论(0编辑  收藏  举报