QT | 手写代码实现HelloWorld

QT | 手写代码实现HelloWorld


前面,我们通过GUI设计工具,拖拽Text Browser组件,显示了一个文本窗口,如下:

qt-17

现在,我们不使用mainwindow.ui文件,手写代码实现窗口。

1.新建工程

qt-18


qt-19


最终工程目录结构如下:

qt-20


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() 函数中分别定义了 QApplicationMainWindow 类的对象,因此需要引入 mainwindows.hQApplication 头文件。mainwindow.h 文件是我们自己创建的,引入时用" "双引号括起来;QApplication 是 Qt 提供给我们的,引入时用<>括起来。
  • 第 7 行:MainWindow 是自定义的类,继承自 QMainWindow 主窗口类,因此 MainWindow 也是一个主窗口类。wMainWindow 类实例化出的对象,表示一个主窗口。
  • 第 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.编译、运行

qt-21


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.编译、运行

qt-22

  • 添加了一个 QLabel 类的指针对象,相应地要引入<QLabel>头文件;
  • 在构造函数中定义了一个 QLabel 类的文本框对象,通过调用它的带参构造函数,设置它的父对象为当前类的对象,同时设置 “Hello,World!” 为要显示的文本信息。

过往文章

QT5 | 第一个QT程序

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值