Qt工程的建立

来源:互联网 发布:网络的定义是什么 编辑:程序博客网 时间:2024/05/18 12:41
一、Qt工程的建立(单一个情况:嵌入式开发时建立的gui)
1.打开Qtcreator,creator 一个new project
2.选择qt c++ project 中的qt project gui app
3.起个名字,选择路径(最好不要有中文路径)并next
3.到选择基类的时候(base class),选择qwidget,因为要建一个窗口
4.接着next和finish就可以了
5.在右上角附近的filter tree中把hide选项的勾去掉,然后编译一下,会显示出自动生成的.h文件
二、代码分析(为便于分析,从UI中托入一些label或者button)

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui //声明,下面的类中用到了这个类,有什么用

{
    class Widget;
}

class Widget : public QWidget //有什么用

{
    Q_OBJECT

public:
    explicit Widget(QWidget*parent = 0);
    ~Widget();

private:
    Ui::Widget *ui; //私有一个
};

#endif

这是标准的头文件!(除了自动生成的.h文件,这也是默认唯一个头文件)

#include<QtGui/QApplication>
#include "widget.h"

int main(int argc,char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();//为什么能调用show

    return a.exec();//返回的是什么
}

标准的main.cpp

#include"widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget*parent):QWidget(parent)

                                   ,ui(new Ui::Widget)

//传两个参数,第一个是继承的基类需要的参数,第二个是自己需要参数

有什么用?


{
    ui->setupUi(this);//这个函数是什么,this是谁的?有什么用
}

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


标准的另一个.cpp文件

以上这三个都是建立好工程以后自动生成的,不需要编译

还有一个系统编译生成.h文件

/********************************************************************************
** Form generated from reading UI file 'widget.ui'
**
** Created: Mon Nov 22 20:46:49 2010
** by: Qt User Interface Compiler version 4.7.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/


#ifndef UI_WIDGET_H
#define UI_WIDGET_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Widget
{
public:

    void setupUi(QWidget*Widget)
    {
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QString::fromUtf8("Widget"));
        Widget->resize(400, 300);

        retranslateUi(Widget);

        QMetaObject::connectSlotsByName(Widget);
    }
// setupUi


    void retranslateUi(QWidget*Widget)
    {
        Widget->setWindowTitle(QApplication::translate("Widget","Widget", 0, QApplication::UnicodeUTF8));
    }
// retranslateUi


};

namespace Ui //

{
    class Widget:public Ui_Widget {};
}
// namespace Ui


QT_END_NAMESPACE

#endif
// UI_WIDGET_H

原创粉丝点击