Qt文件内容讲解(helloworld)
main.cpp文件
#include"widget.h"
#include<QApplication>
intmain(int argc, char *argv[])
{
QApplication a(argc, argv);//两个参数用于在命令行传递过来的参数
//作用:用于管理GUI应用程序的控制流和主要设置,主要用于处理部件的初始化和结尾操作,Qt图形界面用于必须创建一个QApplication对象,QApplication对象有一个全局的指针qApp,在项目的任何地方都可以直接使用该指针来应用该类中的方法。
Widget w;//要显示的窗口,创建对象之后默认是隐藏的
w.show(); //调用show函数显示窗口
return a.exec(); //进入主事件循环,直到调用exit函数,必须调用该函数启动事件处理,主事件循环会从窗口系统接收事件,并将其传递到应用程序部件中,一般在调用该函数之前,我们无法与程序进行交换,特例:模态的对话框窗口,它可以调用自己的exec函数。
}
widget.h文件
#ifndefWIDGET_H //预处理指令,避免该头文件多重包含
#defineWIDGET_H
#include<QWidget>
namespaceUi {
classWidget; //前置声明一个Widget类,与下面Widget类同名,使用了命名空间避免命名冲突
}
classWidget : public QWidget
{
Q_OBJECT //调用Q_OBJECT宏,必须在类定义的开始定义宏,才是使用Qt中的特殊功能,比如信号和槽
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui; //通过该指针可以访问设计模式在添加到界面中的部件
};
#endif// WIDGET_H
widget.cpp文件
#include"widget.h"
#include"ui_widget.h"
Widget::Widget(QWidget*parent) :
QWidget(parent),
ui(new Ui::Widget) //构造函数初始化操作,将从构造函数传递过来的parent指针,直接传递给QWidget,这样确保实现QWidget的默认操作,初始化了ui指针。
{
ui->setupUi(this) ; //setupUi函数,该函数是界面文件生成类中的函数,只有调用该函数才能把设计模式设计的界面应用到自定的Widget类中
}
Widget::~Widget()
{
delete ui;
}
ui_widget.h文件
#ifndefUI_WIDGET_H
#defineUI_WIDGET_H
#include<QtCore/QVariant>
#include<QtWidgets/QAction>
#include<QtWidgets/QApplication>
#include<QtWidgets/QButtonGroup>
#include<QtWidgets/QHeaderView>
#include<QtWidgets/QLabel>
#include<QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
classUi_Widget //由ui文件生成的类
{
public:
QLabel *label;
void setupUi(QWidget *Widget)
{
if (Widget->objectName().isEmpty())
Widget->setObjectName(QStringLiteral("Widget"));
Widget->resize(400, 300);
label = new QLabel(Widget);
label->setObjectName(QStringLiteral("label"));
label->setGeometry(QRect(170, 110,221, 91));
retranslateUi(Widget);
QMetaObject::connectSlotsByName(Widget); //实现信号与槽的自动关联
} // setupUi
void retranslateUi(QWidget *Widget) //实现对字符串的编码转换
{
Widget->setWindowTitle(QApplication::translate("Widget","Widget", Q_NULLPTR));
label->setText(QApplication::translate("Widget","Hello World!", Q_NULLPTR));
} // retranslateUi
};
namespaceUi {
class Widget: public Ui_Widget {}; //使这里生成的类与创建类同名,使用了命名空间
}// namespace Ui
QT_END_NAMESPACE
#endif// UI_WIDGET_H
helloworld.pro项目文件
QT += core gui //与下行相同,预示项目中要使用到的模块,core模块包含了Qt的核心功能,所有的Qt程序必须包含该模块。gui模块提供了窗口系统集成,事件处理,opengl基本的图像字体文本等功能,在图形界面中必须包含该模块
greaterThan(QT_MAJOR_VERSION,4): QT += widgets //当Qt版本大于4时,才使用该模块,在Qt4时代所有的图形界面类都包含在GUI模块中,到Qt5所有图形界面类都包含在widgets模块中,使用图形界面必须包含该模块。
TARGET= helloworld //设置生成目标文件名称,即.exe文件名称,默认是项目名称
TEMPLATE= app //设置模板类型,app表明项目是一个应用程序
DEFINES+= QT_DEPRECATED_WARNINGS //如果使用Qt中被标记为废弃的功能,编译时将发出警告
SOURCES+= main.cpp\ //源文件
widget.cpp
HEADERS += widget.h //头文件
FORMS += widget.ui //界面文件
RC_ICONS= cartoon.ico //图标文件