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
类实现方式如下:
调用方式:
QPointer<OBSAbout> about;
void OBSBasic::on_actionShowAbout_triggered()
{
if (about)
about->close();
about = new OBSAbout(this);
about->show();
about->setAttribute(Qt::WA_DeleteOnClose, true);
}