UI有点感觉了

This commit is contained in:
gfdgd xi 2024-01-01 15:19:08 +08:00
parent 0b27387d08
commit 1b30fd4a6c
4 changed files with 234 additions and 19 deletions

@ -18,6 +18,5 @@ int main(int argc, char *argv[])
}
}
MainWindow w;
w.show();
return a.exec();
}

@ -1,15 +1,172 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGridLayout>
#include <QLabel>
#include <QComboBox>
#include <QPushButton>
#include <QMainWindow>
#include <QObject>
#include <QSizePolicy>
#include <QSpacerItem>
#include <QTextBrowser>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
MainWindow::MainWindow(){
QMainWindow *window = new QMainWindow();
QWidget *widget = new QWidget();
window->setCentralWidget(widget);
QGridLayout *mainLayout = new QGridLayout();
QSizePolicy *size = new QSizePolicy();
//size->setVerticalPolicy(0);
QWidget *leftUp = new QWidget();
mainLayout->addWidget(leftUp, 0, 0, 1, 1);
QGridLayout *leftUpLayout = new QGridLayout();
leftUp->setLayout(leftUpLayout);
QLabel *fastLabel = new QLabel(QObject::tr("快速启动"));
fastLabel->setStyleSheet("font: 30px;");
leftUpLayout->addWidget(fastLabel, 0, 0, 1, 2);
leftUpLayout->addWidget(new QLabel("<hr>"), 1, 0, 1, 2);
leftUpLayout->addWidget(new QLabel(QObject::tr("请选择容器路径:")), 2, 0, 1, 1);
QComboBox *e1 = new QComboBox();
e1->setEditable(1);
leftUpLayout->addWidget(e1, 3, 0, 1, 1);
QPushButton *button1 = new QPushButton("浏览");
//button1.clicked.connect(liulanbutton);
leftUpLayout->addWidget(button1, 3, 1, 1, 1);
leftUpLayout->addWidget(new QLabel(QObject::tr("请选择要执行的程序EXE、MSI或者命令")), 4, 0, 1, 1);
QComboBox *e2 = new QComboBox();
e2->setEditable(1);
leftUpLayout->addWidget(e2, 5, 0, 1, 1);
QPushButton *button2 = new QPushButton(QObject::tr("浏览"));
//button2.clicked.connect(liulanexebutton);
leftUpLayout->addWidget(button2, 5, 1, 1, 1);
leftUpLayout->addWidget(new QLabel(QObject::tr("请选择WINE版本")), 6, 0, 1, 1);
QComboBox *o1 = new QComboBox();
leftUpLayout->addWidget(o1, 7, 0, 1, 1);
// 设置空间权重
//button1->setSizePolicy(size);
//button2->setSizePolicy(size);
// UI 创建
QWidget *leftDown = new QWidget();
mainLayout->addWidget(leftDown, 1, 0, 1, 1);
QVBoxLayout *leftDownLayout = new QVBoxLayout();
leftDown->setLayout(leftDownLayout);
QLabel *highLabel = new QLabel(QObject::tr("高级功能"));
highLabel->setStyleSheet("font: 30px;");
leftDownLayout->addWidget(highLabel);
leftDownLayout->addWidget(new QLabel("<hr>"));
leftDownLayout->addWidget(new QLabel(QObject::tr("创建快捷方式Desktop文件")));
QHBoxLayout *createDesktopLink = new QHBoxLayout();
QLabel *label_r_2 = new QLabel(QObject::tr("名称:"));
createDesktopLink->addWidget(label_r_2);
QComboBox *combobox1 = new QComboBox();
combobox1->setEditable(1);
createDesktopLink->addWidget(combobox1);
QPushButton *button5 = new QPushButton(QObject::tr("创建到桌面"));
//button5.clicked.connect(make_desktop_on_desktop);
createDesktopLink->addWidget(button5);
QPushButton *saveDesktopFileOnLauncher = new QPushButton(QObject::tr("创建到开始菜单"));
//saveDesktopFileOnLauncher.clicked.connect(make_desktop_on_launcher);
createDesktopLink->addWidget(saveDesktopFileOnLauncher);
leftDownLayout->addLayout(createDesktopLink);
QGridLayout *programManager = new QGridLayout();
leftDownLayout->addLayout(programManager);
programManager->addWidget(new QLabel(QObject::tr("程序管理:")), 0, 0, 1, 1);
QPushButton *getProgramIcon = new QPushButton(QObject::tr("提取图标"));
//getProgramIcon.clicked.connect(lambda: RunWineProgram(f"{programPath}/BeCyIconGrabber.exe' '{e2.currentText()}" if e2.currentText()[:2].upper() == "C:" else f"{programPath}/BeCyIconGrabber.exe' 'z:/{e2.currentText()}"));
programManager->addWidget(getProgramIcon, 1, 0, 1, 1);
programManager->addWidget(new QLabel(" "), 1, 1, 1, 1);
QPushButton *trasButton = new QPushButton(QObject::tr("窗口透明工具"));
//trasButton.clicked.connect(lambda: RunWineProgram(f"{programPath}/窗体透明度设置工具.exe"));
programManager->addWidget(trasButton, 1, 2, 1, 1);
QPushButton *uninstallProgram = new QPushButton(QObject::tr("卸载程序"));
//uninstallProgram.clicked.connect(lambda: RunWineProgram(f"{programPath}/geek.exe"));
programManager->addWidget(new QLabel(" "), 1, 3, 1, 1);
programManager->addWidget(uninstallProgram, 1, 4, 1, 1);
QPushButton *miniAppStore = new QPushButton(QObject::tr("微型应用商店"));
//miniAppStore.clicked.connect(lambda: threading.Thread(target=MiniAppStore).start());
programManager->addWidget(new QLabel(" "), 1, 5, 1, 1);
programManager->addWidget(miniAppStore, 1, 6, 1, 1);
programManager->addWidget(new QLabel(" "), 1, 7, 1, 1);
QPushButton *getProgramStatus = new QPushButton(QObject::tr("获取该程序运行情况"));
//getProgramStatus.clicked.connect(ProgramRunStatusShow.ShowWindow);
programManager->addWidget(getProgramStatus, 1, 8, 1, 1);
QPushButton *getLoseDll = new QPushButton(QObject::tr("检测静态下程序缺少DLL"));
//getLoseDll.clicked.connect(GetLoseDll);
programManager->addWidget(new QLabel(" "), 1, 9, 1, 1);
programManager->addWidget(getLoseDll, 1, 10, 1, 1);
programManager->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum), 1, 11, 1, 1);
programManager->addWidget(new QLabel(QObject::tr("WINE配置")), 2, 0, 1, 1);
QPushButton *wineConfig = new QPushButton(QObject::tr("配置容器"));
//wineConfig.clicked.connect(lambda: RunWineProgram("winecfg"));
programManager->addWidget(wineConfig, 3, 0, 1, 1);
QPushButton *fontAppStore = new QPushButton(QObject::tr("字体商店"));
//fontAppStore.clicked.connect(FontAppStore);
programManager->addWidget(fontAppStore, 3, 2, 1, 1);
QPushButton *button_r_6 = new QPushButton(QObject::tr("RegShot"));
//button_r_6.clicked.connect(lambda: RunWineProgram(f"{programPath}/RegShot/regshot.exe"));
programManager->addWidget(button_r_6, 3, 4, 1, 1);
QPushButton *sparkWineSetting = new QPushButton(QObject::tr("星火wine配置"));
//sparkWineSetting.clicked.connect(lambda: threading.Thread(target=os.system, args=["bash /opt/durapps/spark-dwine-helper/spark-dwine-helper-settings/settings.sh"]).start());
programManager->addWidget(sparkWineSetting, 3, 6, 1, 1);
QPushButton *wineAutoConfig = new QPushButton(QObject::tr("自动/手动配置 Wine 容器"));
//wineAutoConfig.clicked.connect(WineBottonAutoConfig);
programManager->addWidget(wineAutoConfig, 3, 8, 1, 1);
QPushButton *wineBottleReboot = new QPushButton(QObject::tr("重启指定Wine容器"));
//wineBottleReboot.clicked.connect(lambda: RunWineProgram(f"wineboot' '-k"));
programManager->addWidget(wineBottleReboot, 3, 10, 1, 1);
// 权重
//button5->setSizePolicy(size);
//saveDesktopFileOnLauncher->setSizePolicy(size);
//label_r_2->setSizePolicy(size);
//getProgramIcon->setSizePolicy(size);
// //trasButton.setSizePolicy(size);
//button_r_6->setSizePolicy(size);
//wineConfig->setSizePolicy(size);
QTextBrowser *returnText = new QTextBrowser();
returnText->setStyleSheet("background-color: black;"\
"color: white;");
returnText->setText(QObject::tr("在此可以看到wine安装应用时的终端输出内容\n"\
"=============================================\n"\
"如果解决了你的问题请不要吝啬你的star哟\n"\
"地址:\n"\
"https://gitee.com/gfdgd-xi/deep-wine-runner\n"\
"https://github.com/gfdgd-xi/deep-wine-runner\n"\
"https://sourceforge.net/projects/deep-wine-runner"));
mainLayout->setRowStretch(0, 2);
mainLayout->setRowStretch(1, 1);
mainLayout->setColumnStretch(0, 2);
mainLayout->setColumnStretch(1, 1);
mainLayout->addWidget(returnText, 0, 1, 2, 1);
// 版权
QLabel *copy = new QLabel("程序版本:{version}<b>提示Wine 无法保证可以运行所有的 Windows 程序,如果想要运行更多 Windows 程序,可以考虑虚拟机和双系统</b><br/>"\
"<b>注:部分二进制兼容层会自动注册 binfmt如原版的 Box86/64、Qemu User Static则意味着无需在 Wine 版本那里特别指定兼容层,直接指定 Wine 即可</b><br/>"\
"©2020~{time.strftime('%Y')} gfdgd xi");
// 程序运行
QWidget *programRun = new QWidget();
QHBoxLayout *programRunLayout = new QHBoxLayout();
programRun->setLayout(programRunLayout);
programRunLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum));
QPushButton *button3 = new QPushButton(QObject::tr("运行程序"));
//button3.clicked.connect(runexebutton);
programRunLayout->addWidget(button3);
QPushButton *killProgram = new QPushButton(QObject::tr("终止程序"));
//killProgram.clicked.connect(KillProgram);
programRunLayout->addWidget(killProgram);
QPushButton *killBottonProgram = new QPushButton(QObject::tr("终止指定容器的程序"));
//killBottonProgram.clicked.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/kill.sh' '{os.path.basename(e1.currentText())}'"]).start());
programRunLayout->addWidget(killBottonProgram);
mainLayout->addWidget(programRun, 2, 1, 1, 1);
widget->setLayout(mainLayout);
window->show();
}
MainWindow::~MainWindow()
{
delete ui;
//delete ui;
}

@ -1,21 +1,16 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
class MainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
MainWindow();
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

@ -13,9 +13,73 @@
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar"/>
<widget class="QStatusBar" name="statusbar"/>
<widget class="QWidget" name="window">
<layout class="QGridLayout" name="gridLayout" rowstretch="2,0" columnstretch="2,0,0">
<item row="0" column="0">
<widget class="QWidget" name="leftUp" native="true">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>210</x>
<y>120</y>
<width>106</width>
<height>36</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
</item>
<item row="0" column="1">
<widget class="QTextBrowser" name="returnText">
<property name="styleSheet">
<string notr="true">background-color: black;
color: white;</string>
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Mono'; font-size:11pt;&quot;&gt;在此可以看到wine安装应用时的终端输出内容&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Mono'; font-size:11pt;&quot;&gt;=============================================&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Mono'; font-size:11pt;&quot;&gt;如果解决了你的问题请不要吝啬你的star哟&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Mono'; font-size:11pt;&quot;&gt;地址:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Mono'; font-size:11pt;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Mono'; font-size:11pt;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Mono'; font-size:11pt;&quot;&gt;https://sourceforge.net/projects/deep-wine-runner&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QWidget" name="leftDown" native="true"/>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>36</height>
</rect>
</property>
<widget class="QMenu" name="menu">
<property name="title">
<string>程序</string>
</property>
<addaction name="action"/>
</widget>
<addaction name="menu"/>
</widget>
<action name="action">
<property name="text">
<string>退出程序</string>
</property>
</action>
</widget>
<resources/>
<connections/>