From 30c9b7c70fb0f9afa2886a644555e0000efc8bd3 Mon Sep 17 00:00:00 2001 From: soaringmz <102166753+soaringmz@users.noreply.github.com> Date: Sat, 30 Aug 2025 12:00:17 +0800 Subject: [PATCH] Add Qt GUI version --- .gitignore | 4 +++- README.md | 4 ++++ qt_gui/CMakeLists.txt | 14 +++++++++++++ qt_gui/main.cpp | 10 ++++++++++ qt_gui/mainwindow.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++ qt_gui/mainwindow.h | 12 +++++++++++ 6 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 qt_gui/CMakeLists.txt create mode 100644 qt_gui/main.cpp create mode 100644 qt_gui/mainwindow.cpp create mode 100644 qt_gui/mainwindow.h diff --git a/.gitignore b/.gitignore index efe4b2b..b50ac81 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .vscode/ -bin/ \ No newline at end of file +bin/ +build/ +qt_gui/build/ \ No newline at end of file diff --git a/README.md b/README.md index 5342748..8120d3e 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,10 @@ 欢迎访问[原理介绍博客](https://blog.csdn.net/weixin_42112038/article/details/125346545),欢迎关注! +## Qt 图形界面 + +仓库新增了基于 Qt 的简洁界面(位于 `qt_gui/` 目录),提供更现代的窗口布局,并包含结束相关进程等基础功能。希望在保持功能的同时,带来更美观优雅的使用体验。 + ## 功能 注:以下*斜体标注*的内容表示即将到来的功能 diff --git a/qt_gui/CMakeLists.txt b/qt_gui/CMakeLists.txt new file mode 100644 index 0000000..29c2f57 --- /dev/null +++ b/qt_gui/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.5) +project(MythwareToolkitQt) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_AUTOMOC ON) + +find_package(Qt5 REQUIRED COMPONENTS Widgets) + +add_executable(MythwareToolkitQt + main.cpp + mainwindow.cpp + mainwindow.h) + +target_link_libraries(MythwareToolkitQt Qt5::Widgets) diff --git a/qt_gui/main.cpp b/qt_gui/main.cpp new file mode 100644 index 0000000..3a1fbcc --- /dev/null +++ b/qt_gui/main.cpp @@ -0,0 +1,10 @@ +#include "mainwindow.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + MainWindow w; + w.show(); + return app.exec(); +} diff --git a/qt_gui/mainwindow.cpp b/qt_gui/mainwindow.cpp new file mode 100644 index 0000000..6347cc0 --- /dev/null +++ b/qt_gui/mainwindow.cpp @@ -0,0 +1,46 @@ +#include "mainwindow.h" +#include +#include +#include +#include +#include +#include + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) +{ + setWindowTitle(tr("Mythware Toolkit")); + QWidget *central = new QWidget(this); + QVBoxLayout *layout = new QVBoxLayout(central); + + QLabel *title = new QLabel(tr("Mythware Toolkit"), this); + title->setAlignment(Qt::AlignCenter); + layout->addWidget(title); + + QPushButton *killMythware = new QPushButton(tr("Kill Mythware"), this); + layout->addWidget(killMythware); + + QPushButton *killAssistant = new QPushButton(tr("Kill Assistant"), this); + layout->addWidget(killAssistant); + + connect(killMythware, &QPushButton::clicked, this, [this]() { +#ifdef Q_OS_WIN + QProcess::execute("taskkill", {"/f", "/im", "StudentMain.exe"}); + QMessageBox::information(this, tr("Done"), tr("StudentMain.exe terminated.")); +#else + QMessageBox::warning(this, tr("Unsupported"), tr("Available only on Windows.")); +#endif + }); + + connect(killAssistant, &QPushButton::clicked, this, [this]() { +#ifdef Q_OS_WIN + QProcess::execute("taskkill", {"/f", "/im", "Helper.exe"}); + QMessageBox::information(this, tr("Done"), tr("Helper.exe terminated.")); +#else + QMessageBox::warning(this, tr("Unsupported"), tr("Available only on Windows.")); +#endif + }); + + setCentralWidget(central); + resize(360, 200); +} diff --git a/qt_gui/mainwindow.h b/qt_gui/mainwindow.h new file mode 100644 index 0000000..eb3e693 --- /dev/null +++ b/qt_gui/mainwindow.h @@ -0,0 +1,12 @@ +#ifndef MYTHWARE_MAINWINDOW_H +#define MYTHWARE_MAINWINDOW_H + +#include + +class MainWindow : public QMainWindow { + Q_OBJECT +public: + explicit MainWindow(QWidget *parent = nullptr); +}; + +#endif // MYTHWARE_MAINWINDOW_H