创建项目
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();
}
整体结构图:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/129664.html