- 修复 ConfigManager::set() 在持有锁时发射信号导致的死锁 - 添加 setBatch() 方法批量更新配置,只发射一次 configChanged - 新增 HotkeyRecorder 组件:点击按钮后按键录制任意快捷键 - SettingsPage 保存配置改为批量写入,避免多次触发服务重启 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
76 lines
1.5 KiB
C++
76 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <QWidget>
|
|
|
|
class QFormLayout;
|
|
class QLineEdit;
|
|
class QComboBox;
|
|
class QSpinBox;
|
|
class QDoubleSpinBox;
|
|
class QCheckBox;
|
|
class QPushButton;
|
|
class QLabel;
|
|
class QGroupBox;
|
|
|
|
namespace impress {
|
|
|
|
class ConfigManager;
|
|
class HotkeyRecorder;
|
|
|
|
/**
|
|
* @brief 配置页面
|
|
*
|
|
* 管理模型路径、推理参数、音频设置等。
|
|
*/
|
|
class SettingsPage : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
explicit SettingsPage(ConfigManager* configManager, QWidget* parent = nullptr);
|
|
~SettingsPage() override;
|
|
|
|
private slots:
|
|
void onBrowseModelPath();
|
|
void onBrowseTokensPath();
|
|
void onSaveConfig();
|
|
void onResetConfig();
|
|
|
|
private:
|
|
void setupUI();
|
|
void loadFromConfig();
|
|
void saveToConfig();
|
|
|
|
ConfigManager* configManager_;
|
|
|
|
// STT 设置
|
|
QLineEdit* modelPathEdit_;
|
|
QPushButton* browseBtn_;
|
|
QLineEdit* tokensPathEdit_;
|
|
QPushButton* tokensBrowseBtn_;
|
|
QComboBox* modelTypeCombo_;
|
|
QComboBox* deviceCombo_;
|
|
QSpinBox* threadSpin_;
|
|
QSpinBox* sampleRateSpin_;
|
|
QComboBox* languageCombo_;
|
|
QCheckBox* streamingCheck_;
|
|
QCheckBox* debugSaveAudioCheck_;
|
|
HotkeyRecorder* hotkeyRecorder_;
|
|
QSpinBox* beamSizeSpin_;
|
|
QDoubleSpinBox* temperatureSpin_;
|
|
|
|
// 音频设置
|
|
QSpinBox* bufferSizeSpin_;
|
|
QSpinBox* chunkDurationSpin_;
|
|
QSpinBox* paddingSpin_;
|
|
|
|
// UI 设置
|
|
QComboBox* themeCombo_;
|
|
QSpinBox* fontSizeSpin_;
|
|
QCheckBox* showWaveformCheck_;
|
|
QCheckBox* showConfidenceCheck_;
|
|
|
|
// 状态
|
|
QLabel* statusLabel_;
|
|
};
|
|
|
|
} // namespace impress
|