如何创建一个qt项目

创建项目

1.出现一个 projectname.pro文件

在projectname.pro中写入一句

greaterThan(QT_MAJOR_VERSION,4):QT=widgets

 代表qt版本>4 需要添加widgets

2.添加main.cpp文件

#include<QApplication>
#include<QDialog>
#include<Qlabel.h>

int main(int argc,char* argv[])
{
    QApplication a(argc,argv);
    QDialog w;
    QLabel label(&w);
    label.setText("hello world");
    w.show();
    return a.exec();
}

效果:

首先想到窗口太小

修改程序

#include<QApplication>
#include<QDialog>
#include<Qlabel.h>

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("hello world");
    w.show();
    return a.exec();
}

但是由于工程严密性以及iu重新规划

3.添加hellodialog文件

 出现一个

 但是我们需要一个是一个头文件

HelloDialog,h(构建生成 ctrl+shit+b)

/********************************************************************************
** Form generated from reading UI file 'hellodialog.ui'
**
** Created by: Qt User Interface Compiler version 5.6.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_HELLODIALOG_H
#define UI_HELLODIALOG_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QDialog>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>

QT_BEGIN_NAMESPACE

class Ui_HelloDialog
{
public:
    QLabel *label;

    void setupUi(QDialog *HelloDialog)
    {
        if (HelloDialog->objectName().isEmpty())
            HelloDialog->setObjectName(QStringLiteral("HelloDialog"));
        HelloDialog->resize(400, 300);
        label = new QLabel(HelloDialog);
        label->setObjectName(QStringLiteral("label"));
        label->setGeometry(QRect(120, 120, 66, 12));

        retranslateUi(HelloDialog);

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

    void retranslateUi(QDialog *HelloDialog)
    {
        HelloDialog->setWindowTitle(QApplication::translate("HelloDialog", "Dialog", 0));
        label->setText(QApplication::translate("HelloDialog", "hello world", 0));
    } // retranslateUi

};

namespace Ui {
    class HelloDialog: public Ui_HelloDialog {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_HELLODIALOG_H

 添加hellodialog.hpp

#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

 第1、2和22行是预处理指令,避免该头文件多重包含。第6~8行定义了命名空间Ui,并在其中前置声明了HelloDialog类,这个类就是在ui_hellodialog. h文件中看到的那个类。因为它与新定义的类同名,所以使用了Ui命名空间。而前置声明是为了加快编译速度,也可以避免在一个头文件中随意包含其他头文件而产生错误。因为这里只使用了该类对象的指针,如第 19行定义了该类对象的指针,这并不需要该类的完整定义,所以可以使用前置声明。这样就不用在这里添加ui_hellodialog.h的头文件包含,而可以将其放到hellodialog. cpp 文件中进行。第10行是新定义的 HelloDialog类,继承自QDialog类。第12行定义了Q_OBJECT宏,扩展了普通C++类的功能,比如下一章要讲的信号和槽功能,必须在类定义的最开始处定义这个宏。第15行是显式构造函数,参数是用来指定父窗口的,默认是没有父窗口。第16行是析构函数。

编辑hellodialog.cpp

#include "hellodialog.h"
#include"ui_hellodialog.h"

HelloDialog::HelloDialog(QWidget* parent):QDialog(parent)
{
  ui=new Ui::HelloDialog;
  ui->setupUi(this);//创建界面;
}
HelloDialog::~HelloDialog()
{
    delete ui;
}

main函数:

#include<QApplication>
#include"hellodialog.h"
int main(int argc,char* argv[])
{
    QApplication a(argc,argv);
    HelloDialog w;

    w.show();
    return a.exec();
}

整体结构图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值