QT-UI
+ -

OBS-QT-UI设计概述

2025-01-06 5 0

OBS使用的是QT开发的。
OBS中UI的部分是业务逻辑和UI分层开发的。
OBS中关于UI部分代码全部位于目录中:

  • 主窗口:E:\obs\obs-studio-master\UI
  • UI实现:E:\obs\obs-studio-master\build\UI

如对于关于对话框,其主要使用如下组织方式:

#include <memory>
#include <QDialog>
#include "ui_OBSAbout.h"

class OBSAbout : public QDialog {
    Q_OBJECT

public:
    explicit OBSAbout(QWidget *parent = 0);
    std::unique_ptr<Ui::OBSAbout> ui;
private slots:
    void ShowAbout();
    void ShowAuthors();
    void ShowLicense();
};

其中OBSAbout是主窗口,其所有关于UI创建的逻辑由Ui::OBSAbout类实现,其实现代码位于ui_OBSAbout.h

class Ui_OBSAbout
{
    void setupUi(QWidget *OBSAbout)//创建控件
    {
        ...
        retranslateUi(OBSAbout);
    }
    void retranslateUi(QWidget *OBSAbout);//多国语言翻译
}

故代码组成方式如下:

  • E:\obs\obs-studio-master\build\UI\ui_OBSAbout.h
  • E:\obs\obs-studio-master\UI\window-basic-about.hpp
  • E:\obs\obs-studio-master\UI\window-basic-about.cpp

类实现方式如下:
151111612090

调用方式:

QPointer<OBSAbout> about;

void OBSBasic::on_actionShowAbout_triggered()
{
    if (about)
        about->close();

    about = new OBSAbout(this);
    about->show();

    about->setAttribute(Qt::WA_DeleteOnClose, true);
}

0 篇笔记 写笔记

作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!