fix: 修复启动白屏与地图崩溃问题

- SetUseOpenGL(false): QGLWidget 在当前系统不兼容,改用软件渲染
- ExtensionHost_v2: 添加 contributionRegistry() getter 修复空指针
- main.cpp: 两阶段启动 (show → QTimer::singleShot → initialize)
- mainwindow: 分离构造函数与 initialize(),结尾调用 onTabIndexChanged(3)
- 修复 Qt DLL 部署:使用 windeployqt 确保运行时库版本匹配
This commit is contained in:
2026-06-02 19:01:24 +08:00
parent 94fcdb12e0
commit 61cd75cd56
39 changed files with 2994 additions and 1258 deletions
+41
View File
@@ -0,0 +1,41 @@
#ifndef COMMANDREGISTRY_H
#define COMMANDREGISTRY_H
#include <QObject>
#include <QMap>
#include <QStringList>
struct CommandEntry {
QString name;
QString description;
QString pluginName;
int commandId = 0;
bool enabled = true;
};
class CommandRegistry : public QObject
{
Q_OBJECT
public:
explicit CommandRegistry(QObject *parent = nullptr);
void registerCommand(const QString &name, const QString &description,
const QString &pluginName, int commandId = 0);
void unregisterCommand(const QString &name);
void setCommandEnabled(const QString &name, bool enabled);
QStringList commandNames() const;
CommandEntry command(const QString &name) const;
bool hasCommand(const QString &name) const;
int commandCount() const;
signals:
void commandRegistered(const QString &name);
void commandUnregistered(const QString &name);
void commandEnabledChanged(const QString &name, bool enabled);
private:
QMap<QString, CommandEntry> m_commands;
};
#endif