1.6.Qt .cpp/.h/.ui/.pro内容详解

来源:互联网 发布:wifi网络测试 编辑:程序博客网 时间:2024/06/03 20:30

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  //图标文件