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
+50
View File
@@ -0,0 +1,50 @@
#include "CommandRegistry.h"
CommandRegistry::CommandRegistry(QObject *parent) : QObject(parent) {}
void CommandRegistry::registerCommand(const QString &name, const QString &description,
const QString &pluginName, int commandId)
{
CommandEntry entry;
entry.name = name;
entry.description = description;
entry.pluginName = pluginName;
entry.commandId = commandId;
entry.enabled = true;
m_commands.insert(name, entry);
emit commandRegistered(name);
}
void CommandRegistry::unregisterCommand(const QString &name)
{
if (m_commands.remove(name))
emit commandUnregistered(name);
}
void CommandRegistry::setCommandEnabled(const QString &name, bool enabled)
{
if (m_commands.contains(name)) {
m_commands[name].enabled = enabled;
emit commandEnabledChanged(name, enabled);
}
}
QStringList CommandRegistry::commandNames() const
{
return m_commands.keys();
}
CommandEntry CommandRegistry::command(const QString &name) const
{
return m_commands.value(name);
}
bool CommandRegistry::hasCommand(const QString &name) const
{
return m_commands.contains(name);
}
int CommandRegistry::commandCount() const
{
return m_commands.size();
}
+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