创建项目时勾选Generate form(创建界面),并在设计界面加入pushButton和Lable如上,通过槽实现点击按钮显示HelloWorld.
当ctrl+R构建并运行程序,QT会在生成的文件夹中自动生成一个命名类似ui_widget.h的文件,其内容如下:
/********************************************************************************
** Form generated from reading UI file 'widget.ui'
** Created by: Qt User Interface Compiler version 6.5.0
** WARNING! 重新编译ui文件时,此文件中所做的所有更改都将丢失!
********************************************************************************/
//预处理指令(防止对这个头文件的多重包含)
#ifndef UI_WIDGET_H
#define UI_WIDGET_H
//头文件包含
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE //QT命名空间开始的宏
class Ui_Widget
{
public:
QPushButton *pushButton; //定义按钮指针
QLabel *label; //定义标签指针
void setupUi(QWidget *Widget) //定义公有函数
{
if (Widget->objectName().isEmpty())Widget->setObjectName("Widget"); //为窗口设置一个名称
Widget->resize(412, 271); //设置尺寸
pushButton = new QPushButton(Widget); //以窗口为父对象实例按钮
pushButton->setObjectName("pushButton"); //设置按钮对象名
pushButton->setGeometry(QRect(130, 140, 161, 51)); //设置按钮位置
QFont font; //定义一个字体对象
font.setPointSize(14); //设置字体尺寸
pushButton->setFont(font); //将字体对象传给按钮
label = new QLabel(Widget); //实例化标签对象
label->setObjectName("label"); //设置标签对象名
label->setGeometry(QRect(20, 10, 371, 101)); //设置标签位置
QFont font1; //定义一个字体对象
font1.setPointSize(30); //设置字体尺寸
label->setFont(font1); //将字体对象传给标签
label->setTextFormat(Qt::AutoText); //设置标签字体格式
label->setAlignment(Qt::AlignCenter); //设置标签对方方式
retranslateUi(Widget); //
//调用QMetaObject类的connectSlotsByName静态函数,使窗口中的部件可以实现按对象名进行信号和槽的关联
QMetaObject::connectSlotsByName(Widget);
} // setupUi
//此函数实现对窗口中字符串进行编码转换的功能
void retranslateUi(QWidget *Widget)
{
Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
//下方”\347\231\273\345\275\225”是用8进制形式显示数据,\347是一个字节,至于几个字节是一个汉字,取决于使用的字符集:GB的是两个字节一个汉字,UTF-8是三个字节一个汉字。
pushButton->setText(QCoreApplication::translate("Widget", "\346\214\211\351\222\256", nullptr));
label->setText(QCoreApplication::translate("Widget", "TEXT_NULL", nullptr));
} // retranslateUi
};
//在UI命名空间中定义一个类Widget,它继承于上方的类Ui_Widget
//重点注意它在widget.h和widget.cpp中的使用
namespace Ui {
class Widget: public Ui_Widget {};
} // namespace Ui
QT_END_NAMESPACE //QT命名空间开始的宏
#endif // UI_WIDGET_H 预处理指令结束
/*Text.pro文件代码*/
# 项目中使用的模块,所谓模块是相关很多类的集合。
# core模块包含了QT非图形用户界面的核心功能,其它所有模块都依赖这个模块;
# gui扩展了core模块的图形界面功能。
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17 //C++版本
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
# disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
widget.cpp
HEADERS += \
widget.h
FORMS += \
widget.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
/*widget.h文件代码*/
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget* parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked();
private:
Ui::Widget* ui; //定义了一个Ui命名空间中的Widget类的指针对象,详见:ui_widget.h
};
#endif // WIDGET_H
/*widget.cpp文件代码*/
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget* parent)
: QWidget(parent)
, ui(new Ui::Widget) //在构造中将ui指针实例化
{
ui->setupUi(this); //调用setupUi函数实现界面,详见:ui_widget.h
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
ui->label->setText("Hello World.");
}
/*main.cpp文件代码*/
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}