Qt主函数文件

main.cpp是实现main()函数的文件

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

main()函数是应用程序的入口,主要的作用是创建应用程序,创建窗口,显示窗口并运行程序,开始应用程序的消息循环和事件处理。
QApplication是Qt的标准应用程序类,a就是应用程序对象。
MainWindow 是实例设计的窗口的类名,定义此窗口后再用w.show()显示窗口。
a.exec()启动应用程序的执行,开始应用程序的消息循环和事件处理。
窗体相关的文件
编译后的项目会在目录中自动生成一个ui_MainWindow.h,这样一个窗体就关联4个文件:
Widget.h:定义窗体类的头文件
Widget.cpp:Widget类的功能实现源程序文件
Widget.ui:窗体界面文件,由UI设计器自动生成,存储了窗体上各个组件的属性设置和布局
ui_Widget.h:编译后根据窗体上的组件及其属性、信号与槽的关联等自动生成的一个类定义文件
窗体的相关文件
1:widget.h文件
这是一个窗体类的头文件,在创建时选择窗体基类QWidget,在widget.h中定义一个继承自QWidget的类Widget:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui {
    
     class Widget; }//一个UI命名空间,包含一个类Widget,这个类不是文本文件里定义的类Widget,而是ui_widget.h文件里定义的类,用于描述界面组件,这个声明相当于一个外部声明。
QT_END_NAMESPACE

class Widget : public QWidget//继承自QWidget
{
    
    
    Q_OBJECT//使用宏,这是使用Qt的信号与槽机制的类必须加入的一个宏

public:
    Widget(QWidget *parent = nullptr);//类的构造函数
    ~Widget();//类的析构函数

private:
    Ui::Widget *ui;//这个指针是namespace Ui中的Widget类定义的,指向可视化设计的界面,访问界面上的组件都需要通过这个指针ui.
};
#endif // WIDGET_H

2.widget.cpp文件
类Widget的实现代码:

#include "widget.h"
#include "ui_widget.h"//Qt编译生成的与UI文件widget.ui对应的类定义文件

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    
    
    ui->setupUi(this);//执行Ui::Widget类的setupUi()函数,这个函数实现窗口的生成与各种属性的设置、信号与槽的关联.
}//构造函数,执行父类QWidget的构造函数,创建一个Ui::Widget类的对象ui.这个ui就是Widget的private部分定义的指针变量ui.

Widget::~Widget()
{
    
    
    delete ui;
}

2.widget.ui文件
是窗体界面定义文件,是一个XML文件,定义了窗口上的所有组件的属性设置、布局以及信号与槽函数的关联等。用UI设计器可视化设计的界面由Qt自动解析,并以XML文件的形式保存下来,在设计界面时,只需在UI设计器里进行可视化设计即可,而不用管widget.ui文件是怎么生成的。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>351</width>
    <height>241</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
  <widget class="QLabel" name="LabDemo">
   <property name="geometry">
    <rect>
     <x>90</x>
     <y>60</y>
     <width>81</width>
     <height>41</height>
    </rect>
   </property>
   <property name="font">
    <font>
     <family>Agency FB</family>
     <pointsize>12</pointsize>
     <weight>75</weight>
     <bold>true</bold>
    </font>
   </property>
   <property name="text">
    <string>Hello,World</string>
   </property>
  </widget>
  <widget class="QPushButton" name="btnClose">
   <property name="geometry">
    <rect>
     <x>220</x>
     <y>150</y>
     <width>80</width>
     <height>41</height>
    </rect>
   </property>
   <property name="font">
    <font>
     <family>Agency FB</family>
     <pointsize>12</pointsize>
     <weight>75</weight>
     <bold>true</bold>
    </font>
   </property>
   <property name="text">
    <string>Close</string>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>btnClose</sender>
   <signal>clicked()</signal>
   <receiver>Widget</receiver>
   <slot>close()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>259</x>
     <y>170</y>
    </hint>
    <hint type="destinationlabel">
     <x>175</x>
     <y>120</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>

おすすめ

転載: blog.csdn.net/weixin_42105843/article/details/121289727