初始化:图形化界面骨架(文件选择、语法高亮、自动缩进、查找/替换)

This commit is contained in:
hym
2025-11-27 21:03:34 +08:00
parent 8657b085c8
commit db3715b9a0
10 changed files with 1863 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
#include "compileprocessmanager.h"
#include <QProcess>
CompileProcessManager::CompileProcessManager(QObject *parent)
: QObject(parent)
{
m_process = new QProcess(this);
connect(m_process, &QProcess::finished,
this, &CompileProcessManager::onProcessFinished);
}
void CompileProcessManager::runCompile(const QString &sourceCode)
{
if (m_process->state() != QProcess::NotRunning) {
// 简单处理:如果已经在运行,就先杀掉,或直接返回
m_process->kill();
m_process->waitForFinished();
}
// TODO: 这里根据你的编译器协议生成指令和参数
// 假设你已存在一个后端可执行文件 "my_compiler_backend"
QString program = "my_compiler_backend";
QStringList args = buildArguments(sourceCode);
m_process->setProgram(program);
m_process->setArguments(args);
m_process->start();
}
QStringList CompileProcessManager::buildArguments(const QString &sourceCode)
{
QStringList args;
// TODO: 把 sourceCode 写入临时文件 / 管道 / 特定协议
// 这里只是示例:假设后端接受一个 -code "xxx" 的参数
args << "-code" << sourceCode;
return args;
}
void CompileProcessManager::onProcessFinished(int exitCode, QProcess::ExitStatus status)
{
Q_UNUSED(status);
QString stdoutText = QString::fromLocal8Bit(m_process->readAllStandardOutput());
QString stderrText = QString::fromLocal8Bit(m_process->readAllStandardError());
emit compileFinished(stdoutText, stderrText, exitCode);
}

View File

@@ -0,0 +1,27 @@
#pragma once
#include <QObject>
#include <QProcess> // ✅ 关键:要完整引入 QProcess
class CompileProcessManager : public QObject
{
Q_OBJECT
public:
explicit CompileProcessManager(QObject *parent = nullptr);
// 目前简单接受代码字符串,后面可以加更多参数
void runCompile(const QString &sourceCode);
signals:
void compileFinished(const QString &stdoutText,
const QString &stderrText,
int exitCode);
private slots:
void onProcessFinished(int exitCode, QProcess::ExitStatus status);
private:
QProcess *m_process = nullptr;
QStringList buildArguments(const QString &sourceCode);
};