QT | 手写代码实现HelloWorld
文章目录
- `QT` | 手写代码实现`HelloWorld`
- 1.新建工程
- 1-1.main.cpp文件
- 1-2.mainwindow.h和mainwindow.cpp文件
- 1-3.编译、运行
- 2.编码实现简易的窗口界面
- 2-1.mainwindow.h
- 2-2.mainwindow.c
- 2-3.编译、运行
前面,我们通过GUI
设计工具,拖拽Text Browser
组件,显示了一个文本窗口,如下:
现在,我们不使用mainwindow.ui
文件,手写代码实现窗口。
1.新建工程
最终工程目录结构如下:
1-1.main.cpp文件
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);/* QT框架:必须需要 */
MainWindow w;
w.show();
return a.exec();/* QT框架:必须需要 */
}
除了第 6、8 行代码外,其它代码的含义分别是:
- 1~2 行:由于
main()
函数中分别定义了QApplication
和MainWindow
类的对象,因此需要引入mainwindows.h
和QApplication
头文件。mainwindow.h
文件是我们自己创建的,引入时用" "
双引号括起来;QApplication
是 Qt 提供给我们的,引入时用<>
括起来。- 第 7 行:
MainWindow
是自定义的类,继承自QMainWindow
主窗口类,因此MainWindow
也是一个主窗口类。w
是MainWindow
类实例化出的对象,表示一个主窗口。- 第 8 行:默认情况下,
Qt
提供的所有组件(控件、部件)都是隐藏的,不会自动显示。通过调用MainWindow
类提供的show()
方法,w
窗口就可以在程序运行后显示出来。
1-2.mainwindow.h和mainwindow.cpp文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);/* 构造函数 */
~MainWindow(); /* 析构函数 */
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
}
MainWindow::~MainWindow()
{
}
初始状态下,
MainWindow
类由Q_OBJECT
、构造函数和析构函数组成:
Q_OBJECT
:本质是一个已定义好的宏,所有需要“信号和槽”功能的组件都必须将Q_OBJECT
作为private
属性成员引入到类中。本节设计的界面程序不会用到“信号和槽”,因此可以删除Q_OBJECT
。- 带参的构造函数:
QWidget
是所有组件的基类,借助parent
指针,可以为当前窗口指定父窗口。例如图 1 中,Text Browser
文本框位于主窗口中,主窗口就是它的父窗口。当父窗口被删除时,所有子窗口也会随之一起删除。当然也可以不指定父窗口,那么当前窗口就会作为一个独立的窗口,不会受到其它窗口的影响。
1-3.编译、运行
2.编码实现简易的窗口界面
2-1.mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel> // 引入QLable文件框组件的头文件
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);/* 构造函数 */
~MainWindow(); /* 析构函数 */
private:
QLabel *lab; // 定义一个私有的QLable指针对象
};
#endif // MAINWINDOW_H
2-2.mainwindow.c
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->lab = new QLabel("Hello, world!", this);// 创建一个QLable对象
}
MainWindow::~MainWindow()
{
}
2-3.编译、运行
- 添加了一个 QLabel 类的指针对象,相应地要引入
<QLabel>
头文件;- 在构造函数中定义了一个
QLabel
类的文本框对象,通过调用它的带参构造函数,设置它的父对象为当前类的对象,同时设置 “Hello,World!
” 为要显示的文本信息。
过往文章
QT5 | 第一个QT程序