QT源程序与编译方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chris_renyi/article/details/72582321

1  源程序

(1)纯代码

在QT Creator中创建一个Empty qmake project,然后*.pro文件中添加widget模块的语句如下:

greaterThan(QT_MAJOR_VERSION,4):QT += widgets
然后添加一个main.cpp

#include <QApplication>
#include <QDialog>
#include <QLabel>
int main(int argc, char * argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    w.resize(400, 300);//改变对话框大小
    QLabel label(&w);
    label.move(120,120);
    label.setText(QObject::tr("Hello World! 你好!"));
    w.show();
    return a.exec();
}
工程的结构如图所示

运行结果如图所示


(2)使用ui文件(利用QT设计师)

创建ui文件,使用ui界面替代有代码生成的界面。

ui界面如图所示

通过Crtl+Shift+B快捷键或者构建项目命令,构建工程,产生基于该ui文件的头文件。随后修改main.cpp文件如下


(3) 自定义C++类

自定义类也可以看到QT Creator中的设计师界面类的生成过程。

新建Empty qmake Project,然后再pro文件中添加如下语句:

greaterThan(QT_MAJOR_VERSION,4):QT += widgets
新建一个基于QDialog的类HelloDialog
main.cpp代码如下:
#include <QApplication.h>
#include "hellodialog.h"
int main(int argc, char * argv[])
{
    QApplication a(argc, argv);
    HelloDialog w;
    w.show();
    return a.exec();
}
hellodialog.h的代码如下:
#ifndef HELLODIALOG_H
#define HELLODIALOG_H

#include <QDialog.h>

namespace Ui{
class HelloDialog;
}

class HelloDialog : public QDialog
{
    Q_OBJECT;

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

private:
    Ui::HelloDialog *ui;
};

#endif // HELLODIALOG_H
hellodialog.c的代码如下:
#include "hellodialog.h"
#include "ui_hellodialog.h"
HelloDialog::HelloDialog(QWidget *parent):
    QDialog(parent),
    ui(new Ui::HelloDialog)
{
    //ui = new Ui::HelloDialog;
    ui->setupUi(this);
}
HelloDialog::~HelloDialog()
{
    delete ui;
}
界面类的设置与(2)中相同,运行结果如下:


(4)QT设计师界面类

创建Qt Widgets Application工程,自动完成(3)中的操作,即Qt 设计师界面类的设置。

2 命令行编译过程

在Qt Creator中,自动完成编译之前的准备工作和编译工作,了解编译过程可以更好的了解Qt的运行机制。

第一步,将所有的ui文件,C文件,头文件拷贝的一个工程目录下

第二部,如果ui文件,则执行改步骤,使ui文件构造成头文件;否则跳过。

uic -o ui_hellodialog.h ui_hellodialog.ui
第三部,编译工程文件qro。如果需要一个模块,如widget麽魁岸,则执行该步骤后添加

qmake -project
第四步,生成make文件

qmake
第五部,编译,在window下不许确保WinGW工具已经安装。

window下命令

mingw32 -make
linux下命令

make







没有更多推荐了,返回首页