VS2015 + Qt 实现图形化Hello World(详细步骤)

本次实现基于VS2015+Qt5.9.x(兼容Qt5全系列),全程图形化UI操作,包含环境验证、项目创建、界面设计、代码编写、编译运行全流程,步骤精准可直接复刻。

前提:确认VS2015的Qt插件已安装

  1. 打开VS2015,菜单栏能看到Qt VS Tools,说明插件安装成功(未安装需先装Qt+对应VS插件,Qt5.9.x适配VS2015最佳);

  2. 打开Qt VS Tools→Qt Options,添加已安装的Qt版本(如Qt5.9.9 MSVC2015 32/64bit),并设为默认。

步骤1:创建Qt图形化项目

  1. 打开VS2015,点击文件→新建→项目;

  2. 左侧模板选择Qt→Qt Widgets Application,右侧设置:

  • 项目名称: QtHelloWorld (自定义,建议英文无空格);

  • 位置:选择本地空文件夹(如 D:\QtProjects );

  • 解决方案名称:默认和项目名一致即可,点击确定;

  1. 弹出Qt Widgets Application向导,直接点击下一步(无需修改);

  2. 进入Class Information(类信息)页面,保持默认配置(关键,直接用Qt默认窗口类):

  • Base class(基类): QMainWindow (Qt主窗口类,带菜单栏/状态栏,适合入门);

  • Class name(类名): MainWindow ;

  • Header file/Source file/Form file:自动生成,无需改;

  • 取消勾选Generate form❌(手动拖控件更直观,入门推荐);

  1. 点击下一步→完成,VS会自动生成Qt项目框架(包含头文件、源文件、资源文件)。

步骤2:配置项目编译环境(关键,避免编译报错)

  1. 右键项目名称 QtHelloWorld →属性;

  2. 左侧选择配置属性→Qt VS Tools→Qt Version,右侧确认选择的是Qt5.9.x MSVC2015 32/64bit(和插件安装的版本一致);

  3. 左侧选择配置属性→常规,确认平台工具集为 v140 (VS2015默认,对应MSVC2015);

  4. 点击确定,关闭属性窗口。

步骤3:设计图形化UI(拖放QLabel显示Hello World)

Qt的UI设计师是可视化拖放工具,无需手写界面代码,步骤如下:

  1. 打开项目左侧解决方案资源管理器,双击MainWindow.ui(在Forms文件夹下),自动启动Qt Designer;

  2. Qt Designer界面介绍(左侧控件箱、中间画布、右侧属性栏):

  • 左侧Widget Box(控件箱),找到Display Widgets→QLabel(标签控件,用于显示文字);
  1. 鼠标按住QLabel,拖到中间的主窗口画布中,松开后画布出现一个空白标签;

  2. 选中画布中的QLabel,右侧Property Editor(属性栏)修改属性:

  • 找到text属性,将默认的 TextLabel 改为 Hello, World! (要显示的文字);

  • (可选)修改font属性:点击font右侧的 ... ,设置字体为微软雅黑、字号16、加粗(提升显示效果);

  • (可选)修改alignment属性:选择 AlignHCenter | AlignVCenter (文字居中显示);

  • (可选)拖动QLabel的边框,调整控件大小,让文字完整显示;

  1. 保存UI设计:点击Qt Designer菜单栏文件→保存(或按Ctrl+S),关闭Qt Designer,回到VS2015(UI修改会自动同步到项目)。

步骤4:编写核心代码(极简,仅需确认初始化)

VS自动生成的代码已包含窗口初始化逻辑,无需大量修改,仅需确认头文件和源文件的核心代码即可(可直接复制替换):

4.1 头文件:MainWindow.h(默认生成,无需改,核心代码如下)

cpp

#pragma once

#include <QMainWindow>

// 命名空间,由Qt Designer自动生成,关联UI文件

namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

Q_OBJECT // Qt的信号与槽宏,必须保留

public:

explicit MainWindow(QWidget *parent = 0); // 构造函数

~MainWindow(); // 析构函数

private:

Ui::MainWindow *ui; // UI对象,用于访问拖放的控件

};

4.2 源文件:MainWindow.cpp(仅需确认构造函数,核心代码如下)

#include "MainWindow.h"

#include "ui_MainWindow.h"

// 构造函数:初始化UI,自动加载设计的界面

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this); // 关键函数,加载MainWindow.ui的设计,必须保留

}

// 析构函数:释放UI对象

MainWindow::~MainWindow()

{

delete ui;

}

4.3 主函数:QtHelloWorld.cpp(程序入口,默认生成,无需改)

#include "MainWindow.h"

#include <QApplication> // Qt应用程序类,管理程序生命周期

// 程序入口,argc=命令行参数个数,argv=命令行参数数组

int main(int argc, char *argv[])

{

QApplication a(argc, argv); // 创建Qt应用程序对象,必须有且仅有一个

MainWindow w; // 创建主窗口对象

w.show(); // 显示主窗口(Qt窗口默认隐藏,必须调用show())

return a.exec(); // 启动Qt的事件循环,让程序保持运行

}

步骤5:编译并运行Hello World程序

  1. 确认VS2015的解决方案配置为Debug(入门推荐,方便调试),解决方案平台为x86/x64(和Qt版本一致,如Qt5.9.x MSVC2015 32bit则选x86);

  2. 点击VS2015菜单栏生成→生成解决方案(或按F7),底部输出窗口显示 生成成功 (无报错);

  3. 点击菜单栏调试→开始执行(不调试)(或按Ctrl+F5),弹出Qt图形窗口,显示Hello, World!,即实现成功!

常见问题及解决方法

  1. 编译报错:找不到Qt头文件/库文件
  • 解决:步骤2重新配置Qt Version,确保和安装的Qt版本一致;检查VS的平台工具集为v140。
  1. 运行时窗口一闪而过
  • 解决:用Ctrl+F5(不调试运行),而非F5(调试运行,若无断点会直接退出);或在main函数 return a.exec(); 前加 system("pause"); (临时解决)。
  1. Qt Designer无法打开MainWindow.ui
  • 解决:打开Qt VS Tools→Qt Options,确认Qt版本路径正确;重新生成项目(生成→重新生成解决方案)。
  1. 运行报错:缺少Qt动态库(如Qt5Core.dll、Qt5Gui.dll)
  • 解决:用Qt的windeployqt工具拷贝库文件:
  1. 打开Qt的MSVC2015命令行(开始菜单→Qt→Qt5.9.9→MSVC2015 32bit);

  2. 切换到项目生成的可执行文件路径(如 D:\QtProjects\QtHelloWorld\x86\Debug );

  3. 输入命令 windeployqt QtHelloWorld.exe ,自动拷贝所有依赖的动态库。

扩展:修改文字样式/窗口属性

  1. 修改窗口标题:选中Qt Designer中的主窗口,右侧属性栏找到windowTitle,改为 Qt第一个程序 ;

  2. 修改QLabel文字颜色:选中QLabel,属性栏找到styleSheet,输入 color: red; (红色)/ color: #0066cc; (蓝色);

  3. 调整窗口大小:主窗口属性栏找到fixedSize,设置宽高(如 400 200 ),固定窗口大小不允许拖动。

相关推荐
派葛穆2 小时前
Python-批量安装依赖
开发语言·python
Once_day2 小时前
C++之《Effective C++》读书总结(4)
c语言·c++·effective c++
柯一梦2 小时前
STL2---深入探索vector的实现
c++
MSTcheng.2 小时前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
晓13132 小时前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
愚者游世2 小时前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
小镇敲码人2 小时前
探索华为CANN框架中的ACL仓库
c++·python·华为·acl·cann
梵刹古音2 小时前
【C语言】 指针基础与定义
c语言·开发语言·算法
Ekehlaft2 小时前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy