Qt 6: 1-1 简单HelloWorld项目的运行和发布

前言:
学完语法想学qt,发现网上的教程全是qt4和qt5。根据推荐用的书籍《Qt Creator》是基于Qt4,和Qt6相差甚远。但天无绝人之路,根据官方文档和零碎的信息,我把书中的知识进行比对记录。之后可能的所有内容仅用于自我参考。

新建空项目

下面的操作都在File里能找到
在这里插入图片描述
在这里插入图片描述
这里选择MinGW,选MSVC后面会报错main.obj什么的,原因暂且不知。
在这里插入图片描述
创建名为main的源文件

编写程序

main文件代码如下:

#include <QtWidgets/QApplication>
#include <QtWidgets/QDialog>
#include <QtWidgets/QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    QLabel label(&w);
    label.setText("Hello World! 你好Qt!");
    w.show();

    return a.exec();
}

之前的版本头文件是这样的:

#include <QApplication>
#include <QDialog>
#include <QLabel>

查了一下不知道中哪个版本开始这三个头文件被移植到了QWidgets文件下

运行项目,如果你出现一下错误:
在这里插入图片描述
在pro文件下加上:
QT += gui widgets core
来自:

https://blog.csdn.net/qq_37155036/article/details/91625770

(如果不行,自行搜索)
此时结果如下:
在这里插入图片描述
运行完后再把“QT += gui widgets core”删掉或注释,发现项目还是能跑起来,6的。

QApplication类创建一个接受参数的应用程序,用于管理应用程序资源,是Qt GUI程序的必须。
QLabel label用QDialog w作为参数,表明w是label的父窗口。
若不设置父窗口(即默认为空),该组件会独立成一个窗口

设置字符集

一边照着书一边看官方文档改,发现书上用的方法已经被删了,作废。
保留部分以防后期用得到QTextCodec

头文件QTextCodec

这个在Qt5中能直接用,Qt6被删了,我项目用的是qmake,在pro文件中加入:

QT += core5compat

在main中加入:

#include <QTextCodec>

如果是qmake,加入:

find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)

或者在头文件中直接指出QtCore5Compat,如下:

#include <QtCore5Compat/QTextCodec>

设置窗口大小

QWidget及其子类都有两个方法,resize()和move(),参数为宽和高。
resize调大小,move调相对父窗口的位置。
函数原型:
    voidresize(const QSize &);
    void resize(int w, int h);
    void move(const QPoint &);
    void move(int x, int y);
Qt窗口左上角为原点(0, 0),正右为x轴正方向,正下为y轴正方向

ui设计模式

ui文件

创建ui文件,我这里是默认名字dialog.ui:
在这里插入图片描述

在这里插入图片描述
双击该文件,即可进入设计模式(Design Mode)
左边拖组件,右下修改属性,右上所有组件,看起来很简单,这里我加了一个标签:
在这里插入图片描述

返回编辑模式(Edit Mode),单击ui文件,发现这其实是一个仅设计模式可修改的xml文件。
Projects视图下去掉隐藏生成文件的勾,可以看到ui文件生成的头文件(但内容是hpp文件)
在这里插入图片描述

ui头文件内容

前8行注释;
有一个类,类名为Ui_文件名,我这里是Ui_Dialog;
类里面有个QLabel指针的标签,变量名和设计模式里标签的名字一样,根据设计模式自动生成;
setupUi();生成界面,设置大小位置之类的,因为模板选的对话框,所以这里是QDialog类型的
retranslateUi();对窗口里的字符串进行编码转换
创建了一个命名空间,创建了一个与文件同名的类(我的是Dialog)继承Ui_Dialog

使用ui头文件

打开main,把内容都删掉,加入ui的头文件,并输入代码:

#include "ui_dialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    Ui::Dialog ui;
    ui.setupUi(&w);
    w.show();

    return a.exec();
}

虽然代码量和之前比没有少很多,但明显感觉图形化编程简便很多

发布

点开左下角的小电脑,有三个选项,默认用的是Debug,如果想发布,就选择Release选项
在这里插入图片描述
项目同级目录会生成一个以build开头Release结尾的文件,和Debug生成的目录比起来小很多。书里说项目文件夹里有个release是用来发布的,但我一直是空的。
打开build开头Release结尾的文件,含有.exe后缀的文件,就是我们的程序。双击开打会动态链接库报错,根据书中和网上各种方法,暂时没有解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值