在Linux中使用Qt实现简单界面

Qt基础相关

一、新的工程

左边选择Application,右边选择第一行的Qt Widgets Application

这是Qt包含窗口的工程。

C++的类与类之间存在上下级的关系,类可以继承另外一个类。被继承的类通常称作为是基类。
而主动继承的类通常被称作是派生类。

创建工程时选择class information,Base class这里选择第二行的QWidget类。

该工程的目的就是为了创建一个窗口。
对Qt的界面开发,就是基于此工程的,可以在窗口上添加组件或者自由设计均可。

1.1 main.cpp

main函数永远是C++程序的入口。

// widget.h是Qt生成窗口用的类,该类继承了QWidget类,也就意味着widget类包含了QWidget类的所有功能。

#include "widget.h"

// 大写的Q为开头的类,都是Qt提供给我们的类
#include <QApplication>

int main(int argc, char *argv[])
{
    // QApplication类作为Qt程序的入口实现。也作为程序的结束。
    QApplication a(argc, argv);
    
    // 实例化一个窗口类的对象w
    Widget w;
    
    // w.show()的作用是使得窗口能够显示出来
    w.show();
    return a.exec();
}

1.2 widget.h:

#ifndef WIDGET_H
#define WIDGET_H

// 添加基类的头文件
#include <QWidget>

QT_BEGIN_NAMESPACE

// 声明命名空间Ui,Ui下声明了Widget类
namespace Ui { class Widget; }
QT_END_NAMESPACE

// Widget公共继承QWidget
class Widget : public QWidget
{
    // Qt提供给类的宏定义,里面包含了Qt的核心机制,必须要添加,否则极有可能造成程序编译错误。
    Q_OBJECT

public:
    // 构造函数:基类的指针,默认值为nullptr
    Widget(QWidget *parent = nullptr);
    
    // 析构函数,这里也是一个虚析构函数
    ~Widget();

private:
    // 命名空间下Widget类的指针
    Ui::Widget *ui;
};
#endif // WIDGET_H

1.3 widget.cpp

#include "widget.h"
#include "ui_widget.h"

// 以下写法为构造函数的初始化列表
// 初始化列表在这里的作用是:
// 1) 将参数parent透过基类的构造函数传参,并调用基类的构造函数
// 2) 将ui指针实例化Ui::Widget对象
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    // ui对象调用成员函数setupUi,其作用为,运行设计师界面的内容
    ui->setupUi(this);
}

Widget::~Widget()
{
    // 释放ui指针的堆空间
    delete ui;
}

1.4 调整窗口的大小
一般来说,对于窗口的编程,都是在窗口的构造函数下进行的。应当避免在main函数里编程。

  

 // 修改窗口的初始大小,随后还是可以手动调整
    resize(QSize(400, 300));
//    resize(400, 300);

    // 设置窗口的固定大小,随后不可以再手动调整
    setFixedSize(400, 300);


 列子:


1.5 例:在窗口的正中央打印一行"Hello World"
先双击Forms文件夹下widget.ui文件,进入Qt设计师界面。
在左列中找到label,将label拖拽到窗口的正中间
在右上角对象与类的列表中,找到窗口Widget,点击选中窗口。
在右下角geometry可以修改窗口的尺寸。在这里设置为400x300即可,再同步以下label的位置。
选择label,在右下角找到alignment,水平和垂直均选择为Center,代表居中对齐。
选中label,找到font,透过调整点大小的值来修改字体的大小。

如果要通过代码实现上述功能的话,代码编程如下:

widget.h头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

// 声明组件所需要用到的类
#include <QLabel>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
    
    // 声明组件所需要用到的指针
    QLabel* label;
};
#endif // WIDGET_H

widget.cpp:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 调整窗口的大小
    resize(400, 300);


    // 实例化标签对象,第一个参数"Hello World"代表label的文本信息。
    // 第二个参数this,代表窗口,意思是将label标签贴在this窗口上
    label = new QLabel("Hello World", this);
    
    // setGeometry代表设置组件的几何信息,包括:x坐标,y坐标,w宽度,h高度
    label->setGeometry(0, 0, 400, 300);
    
    // setAlignment代表设置组件内字体的对齐方式,Qt::AlignCenter也代表将文字居中对齐
    label->setAlignment(Qt::AlignCenter);
    
    // setStyleSheet代表设置组件的样式表,其中可以修改字体的大小。
    label->setStyleSheet("font:50px");
}

Widget::~Widget()
{
    delete ui;
}


下面就是运行结果

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值