文件菜单:只保留重启(Ctrl+R)和退出(Ctrl+Q)
托盘菜单:增加重启选项(显示主窗口 / 重启 / 退出)
帮助菜单:增加使用说明(F1),包含基本功能、快捷键、使用流程、
配置说明、系统托盘、状态栏、常见问题等详细说明
66 lines
1.6 KiB
C++
66 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <QMainWindow>
|
|
#include <QTabWidget>
|
|
#include <memory>
|
|
|
|
class QLabel;
|
|
class QSystemTrayIcon;
|
|
class QMenu;
|
|
class QIcon;
|
|
|
|
namespace impress {
|
|
|
|
class ConfigManager;
|
|
class SenseVoiceEngine;
|
|
class STTTestPage;
|
|
class FileTranscribePage;
|
|
class SettingsPage;
|
|
class VoiceInputService;
|
|
|
|
/**
|
|
* @brief 主窗口
|
|
*
|
|
* 使用 Tab 页导航管理三个功能页面,共享全局 STT 引擎。
|
|
* 状态栏显示模型名称和加载状态。
|
|
*/
|
|
class MainWindow : public QMainWindow {
|
|
Q_OBJECT
|
|
public:
|
|
explicit MainWindow(ConfigManager* configManager,
|
|
SenseVoiceEngine* sttEngine,
|
|
QWidget* parent = nullptr);
|
|
~MainWindow() override;
|
|
|
|
protected:
|
|
void closeEvent(QCloseEvent* event) override;
|
|
|
|
private:
|
|
void setupUI(SenseVoiceEngine* sttEngine);
|
|
void setupMenuBar();
|
|
void setupStatusBar(SenseVoiceEngine* sttEngine);
|
|
void setupTrayIcon();
|
|
void updateTrayIcon(const QString& status);
|
|
void loadStyleSheet();
|
|
void onVoiceInputConfigChanged();
|
|
void updateModelStatus();
|
|
void doExit();
|
|
void doRestart();
|
|
void showUsage();
|
|
|
|
ConfigManager* configManager_;
|
|
SenseVoiceEngine* sttEngine_;
|
|
VoiceInputService* voiceInputService_;
|
|
STTTestPage* sttPage_;
|
|
FileTranscribePage* transcribePage_;
|
|
SettingsPage* settingsPage_;
|
|
QTabWidget* tabWidget_;
|
|
QLabel* modelStatusLabel_;
|
|
QSystemTrayIcon* trayIcon_ = nullptr;
|
|
QMenu* trayMenu_ = nullptr;
|
|
QIcon idleIcon_; // SP_MediaStop — 就绪/停止
|
|
QIcon activeIcon_; // SP_MediaPlay — 录音/识别
|
|
};
|
|
|
|
} // namespace impress
|