From b65fc848e580376776ee144740aa74c43295d050 Mon Sep 17 00:00:00 2001 From: gfdgd_xi <3025613752@qq.com> Date: Sun, 16 Apr 2023 22:06:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=AE=BE=E7=BD=AE=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mainwindow.cpp | 6 ++-- qemusetting.cpp | 69 +++++++++++++++++++++++++++++++++++++-- qemusetting.h | 8 +++-- qemusetting.ui | 85 +++++++++++++++++++++++++++++++++---------------- 4 files changed, 132 insertions(+), 36 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 0628e00..e7fded4 100755 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -197,7 +197,7 @@ void MainWindow::on_vmChooser_currentIndexChanged(int index) void MainWindow::on_qemuSetting_clicked() { - QemuSetting show; - show.show(); - show.exec(); + QemuSetting *show = new QemuSetting(); + show->show(); + } diff --git a/qemusetting.cpp b/qemusetting.cpp index 0e3383c..08df2ed 100644 --- a/qemusetting.cpp +++ b/qemusetting.cpp @@ -3,12 +3,60 @@ #include #include #include +#include +#include +#include +#include "infoutils.h" +#include +#include QemuSetting::QemuSetting(QWidget *parent) : - QDialog(parent), + QWidget(parent), ui(new Ui::QemuSetting) { ui->setupUi(this); + // 设置变量 + if(QFile::exists(QDir::homePath() + "/.config/deepin-wine-runner/QemuSetting.json")){ + // 读取配置文件 + QFile file(QDir::homePath() + "/.config/deepin-wine-runner/QemuSetting.json"); + file.open(QIODevice::ReadOnly); + QJsonParseError error; + QJsonDocument document = QJsonDocument::fromJson(file.readAll(), &error); + file.close(); + if(error.error != QJsonParseError::NoError){ + QMessageBox::critical(this, "错误", error.errorString()); + } + else { + QJsonObject object = document.object(); + qDebug() << QJsonDocument(object).toJson(); + ui->enableKvm->setChecked(object.value("EnableKVM").toBool()); + ui->enableRdp->setChecked(object.value("EnableRDP").toBool()); + ui->enableVnc->setChecked(object.value("EnableVNC").toBool()); + ui->enableSound->setChecked(object.value("EnableSound").toBool()); + ui->memoryNumber->setValue(object.value("Memory").toInt()); + ui->vncNumber->setValue(object.value("VNC").toInt()); + ui->cpuNumber->setValue(object.value("CPU").toInt()); + } + } + else { + // 默认 + this->SetDefaultValue(); + } +} + +void QemuSetting::SetDefaultValue(){ + long memory = 0; + long memoryAll = 0; + long swap = 0; + long swapAll = 0; + infoUtils::memoryRate(memory, memoryAll, swap, swapAll); + ui->memoryNumber->setValue(memoryAll / 3 / 1024); + ui->vncNumber->setValue(5); + ui->cpuNumber->setValue(get_nprocs()); + ui->enableKvm->setChecked(true); + ui->enableRdp->setChecked(true); + ui->enableVnc->setChecked(true); + ui->enableSound->setChecked(true); } QemuSetting::~QemuSetting() @@ -24,12 +72,27 @@ void QemuSetting::on_buttonBox_accepted() void QemuSetting::on_save_clicked() { - + QJsonParseError error; + QJsonDocument document = QJsonDocument::fromJson("{}", &error); + if(error.error != QJsonParseError::NoError){ + QMessageBox::critical(this, "错误", error.errorString()); + return; + } + QJsonObject object = document.object(); + //object.insert("1", QJsonValue("aa")); + object.insert("EnableKVM", ui->enableKvm->isChecked()); + object.insert("EnableRDP", ui->enableRdp->isChecked()); + object.insert("EnableVNC", ui->enableVnc->isChecked()); + object.insert("EnableSound", ui->enableSound->isChecked()); + object.insert("Memory", ui->memoryNumber->value()); + object.insert("VNC", ui->vncNumber->value()); + object.insert("CPU", ui->cpuNumber->value()); + qDebug() << QJsonDocument(object).toJson(); } void QemuSetting::on_cancel_clicked() { - accept(); + delete this; } void QemuSetting::on_getrunner_clicked() diff --git a/qemusetting.h b/qemusetting.h index d7809c0..f3d6866 100644 --- a/qemusetting.h +++ b/qemusetting.h @@ -1,13 +1,15 @@ #ifndef QEMUSETTING_H #define QEMUSETTING_H -#include +#include +#include +#include namespace Ui { class QemuSetting; } -class QemuSetting : public QDialog +class QemuSetting : public QWidget { Q_OBJECT @@ -15,6 +17,7 @@ public: explicit QemuSetting(QWidget *parent = nullptr); ~QemuSetting(); + private slots: void on_buttonBox_accepted(); @@ -25,6 +28,7 @@ private slots: void on_getrunner_clicked(); private: + void SetDefaultValue(); Ui::QemuSetting *ui; }; diff --git a/qemusetting.ui b/qemusetting.ui index c4b72fd..6d6b764 100644 --- a/qemusetting.ui +++ b/qemusetting.ui @@ -1,22 +1,22 @@ QemuSetting - + 0 0 - 400 + 496 300 - Dialog + 设置 - + Qt::Horizontal @@ -29,17 +29,24 @@ - + + + + <h3>远程服务</h3> + + + + VNC服务端口: - - + + - <h3>远程服务</h3> + 开启 rdp 服务映射 @@ -50,7 +57,14 @@ - + + + + 999999999 + + + + Qt::Vertical @@ -63,26 +77,13 @@ - - - - - - - 开启 rdp 服务映射 + + + + 9999 - - - - 开启VNC服务 - - - - - - @@ -90,13 +91,41 @@ - - + + + + 开启VNC服务 + + + + + 开启 kvm 加速 + + + + CPU核心数: + + + + + + + 999999999 + + + + + + + 开启声音 + + +