mirror of
https://github.com/chenx-dust/EZ4Connect.git
synced 2026-09-20 02:13:32 +08:00
feat: 全新外观
This commit is contained in:
@@ -19,7 +19,7 @@ endif()
|
||||
add_compile_definitions(PROJ_VER="${PROJ_VER}")
|
||||
message("PROJ_VER=${PROJ_VER}")
|
||||
|
||||
find_package(Qt6 COMPONENTS
|
||||
find_package(Qt6 6.5 COMPONENTS
|
||||
Core
|
||||
Concurrent
|
||||
Gui
|
||||
|
||||
@@ -4,10 +4,15 @@
|
||||
#include <QClipboard>
|
||||
#include <QDesktopServices>
|
||||
#include <QDebug>
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
#include <QFontDatabase>
|
||||
#include <QCoreApplication>
|
||||
#include <QGuiApplication>
|
||||
#include <QActionGroup>
|
||||
#include <QInputDialog>
|
||||
#include <QStyle>
|
||||
#include <QStyleHints>
|
||||
#include <QTimer>
|
||||
|
||||
#include "mainwindow.h"
|
||||
@@ -25,6 +30,23 @@
|
||||
#include "presentation/presentationhelpers.h"
|
||||
#include "ui_mainwindow.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
bool appendStyleSheet(const QString &path, QString &styleSheet)
|
||||
{
|
||||
QFile styleFile(path);
|
||||
if (!styleFile.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||
{
|
||||
qWarning().noquote() << "无法加载样式资源:" << path;
|
||||
return false;
|
||||
}
|
||||
|
||||
styleSheet.append(QString::fromUtf8(styleFile.readAll()));
|
||||
styleSheet.append('\n');
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
MainWindow::MainWindow(
|
||||
ApplicationLogger *logger,
|
||||
ApplicationLogFile *logFile,
|
||||
@@ -47,6 +69,13 @@ MainWindow::MainWindow(
|
||||
upgradeSettings();
|
||||
|
||||
ui->setupUi(this);
|
||||
ui->logPlainTextEdit->setFont(
|
||||
QFontDatabase::systemFont(QFontDatabase::FixedFont)
|
||||
);
|
||||
QStyleHints *styleHints = QGuiApplication::styleHints();
|
||||
applyColorScheme(styleHints->colorScheme());
|
||||
connect(styleHints, &QStyleHints::colorSchemeChanged,
|
||||
this, &MainWindow::applyColorScheme);
|
||||
authenticationDialogs = coordinator->authenticationDialogs();
|
||||
connectionSession = coordinator->connection();
|
||||
systemProxySession = coordinator->systemProxy();
|
||||
@@ -58,9 +87,9 @@ MainWindow::MainWindow(
|
||||
{
|
||||
const QString componentName =
|
||||
component == UpdateComponent::Ui ? QStringLiteral("UI") : QStringLiteral("核心");
|
||||
ui->versionLabel->setText(
|
||||
"当前版本:" + QApplication::applicationVersion() +
|
||||
"\n检查" + componentName + "更新失败\n"
|
||||
ui->versionLabel->setToolTip(
|
||||
ui->versionLabel->toolTip()
|
||||
+ "\n检查" + componentName + "更新失败"
|
||||
);
|
||||
});
|
||||
connect(updateChecker, &UpdateChecker::uiUpdateAvailable, this,
|
||||
@@ -104,6 +133,8 @@ MainWindow::MainWindow(
|
||||
{
|
||||
ui->pushButton2->hide();
|
||||
}
|
||||
updateProfileSummary();
|
||||
updateConnectionState(connectionSession->state());
|
||||
});
|
||||
setupTrayIcon();
|
||||
setupProfileMenu();
|
||||
@@ -115,6 +146,10 @@ MainWindow::MainWindow(
|
||||
ui->applicationNameLabel->setText(QApplication::applicationDisplayName());
|
||||
|
||||
updateVersionInfo();
|
||||
updateConnectionState(connectionSession->state());
|
||||
|
||||
connect(connectionSession, &ConnectionSession::stateChanged, this,
|
||||
&MainWindow::updateConnectionState);
|
||||
|
||||
|
||||
// 文件-退出
|
||||
@@ -128,6 +163,13 @@ MainWindow::MainWindow(
|
||||
settingWindow->show();
|
||||
});
|
||||
|
||||
connect(ui->settingPushButton, &QPushButton::clicked,
|
||||
ui->settingAction, &QAction::trigger);
|
||||
connect(ui->guidePushButton, &QPushButton::clicked,
|
||||
ui->configurationGuideAction, &QAction::trigger);
|
||||
connect(ui->openLogPushButton, &QPushButton::clicked,
|
||||
ui->openLogAction, &QAction::trigger);
|
||||
|
||||
// 文件-打开日志文件
|
||||
connect(ui->openLogAction, &QAction::triggered, this,
|
||||
[this]()
|
||||
@@ -380,6 +422,110 @@ void MainWindow::resetZjuConnectUi()
|
||||
trayConnectAction->setText("连接服务器");
|
||||
ui->pushButton2->setText("设置系统代理");
|
||||
ui->pushButton2->hide();
|
||||
updateConnectionState(ConnectionState::Disconnected);
|
||||
updateProfileSummary();
|
||||
}
|
||||
|
||||
void MainWindow::applyColorScheme(Qt::ColorScheme scheme)
|
||||
{
|
||||
const QString themePath = scheme == Qt::ColorScheme::Dark
|
||||
? QStringLiteral(":/resource/mainwindow-dark.qss")
|
||||
: QStringLiteral(":/resource/mainwindow-light.qss");
|
||||
|
||||
QString styleSheet;
|
||||
if (!appendStyleSheet(QStringLiteral(":/resource/mainwindow.qss"), styleSheet)
|
||||
|| !appendStyleSheet(themePath, styleSheet))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
setStyleSheet(styleSheet);
|
||||
}
|
||||
|
||||
void MainWindow::updateConnectionState(ConnectionState state)
|
||||
{
|
||||
QString propertyValue;
|
||||
QString title;
|
||||
QString detail;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case ConnectionState::Disconnected:
|
||||
propertyValue = "disconnected";
|
||||
title = "尚未连接";
|
||||
detail = "连接后即可访问校园网络资源。";
|
||||
break;
|
||||
case ConnectionState::Starting:
|
||||
propertyValue = "starting";
|
||||
title = "正在连接";
|
||||
detail = "正在启动核心并建立安全通道。";
|
||||
break;
|
||||
case ConnectionState::Running:
|
||||
propertyValue = "running";
|
||||
title = "已连接";
|
||||
detail = systemProxySession->isEnabled()
|
||||
? "VPN 通道与系统代理均已启用。"
|
||||
: "VPN 通道运行中,可按需启用系统代理。";
|
||||
break;
|
||||
case ConnectionState::Stopping:
|
||||
propertyValue = "stopping";
|
||||
title = "正在断开";
|
||||
detail = "正在安全关闭当前连接。";
|
||||
break;
|
||||
case ConnectionState::Reconnecting:
|
||||
propertyValue = "reconnecting";
|
||||
title = "正在重连";
|
||||
detail = "连接中断,正在按当前策略重新尝试。";
|
||||
break;
|
||||
case ConnectionState::Failed:
|
||||
propertyValue = "failed";
|
||||
title = "连接失败";
|
||||
detail = "请查看右侧日志,确认网络与账户配置。";
|
||||
break;
|
||||
}
|
||||
|
||||
ui->statusTitleLabel->setText(title);
|
||||
ui->statusDetailLabel->setText(detail);
|
||||
|
||||
const QList<QWidget *> styledWidgets{
|
||||
ui->statusIndicator,
|
||||
ui->pushButton1
|
||||
};
|
||||
for (QWidget *widget : styledWidgets)
|
||||
{
|
||||
widget->setProperty("connectionState", propertyValue);
|
||||
widget->style()->unpolish(widget);
|
||||
widget->style()->polish(widget);
|
||||
widget->update();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::updateProfileSummary()
|
||||
{
|
||||
const QString profileName = currentProfileId.isEmpty()
|
||||
? QStringLiteral("默认")
|
||||
: currentProfileId;
|
||||
const QString protocolSetting = settings->value(
|
||||
"ZJUConnect/Protocol",
|
||||
"easyconnect"
|
||||
).toString();
|
||||
const QString protocol = protocolSetting.compare(
|
||||
"atrust",
|
||||
Qt::CaseInsensitive
|
||||
) == 0 ? QStringLiteral("aTrust") : QStringLiteral("EasyConnect");
|
||||
const QString server = settings->value(
|
||||
"ZJUConnect/ServerAddress"
|
||||
).toString().trimmed();
|
||||
|
||||
QStringList details{protocol};
|
||||
details.append(server.isEmpty() ? QStringLiteral("尚未配置服务器") : server);
|
||||
if (systemProxySession != nullptr && systemProxySession->isEnabled())
|
||||
{
|
||||
details.append(QStringLiteral("系统代理已启用"));
|
||||
}
|
||||
|
||||
ui->profileNameLabel->setText(profileName);
|
||||
ui->profileDetailLabel->setText(details.join(QStringLiteral(" · ")));
|
||||
}
|
||||
|
||||
void MainWindow::setupTrayIcon()
|
||||
@@ -622,6 +768,7 @@ void MainWindow::createProfile()
|
||||
upgradeSettings();
|
||||
updateVersionInfo();
|
||||
resetZjuConnectUi();
|
||||
updateVersionInfo();
|
||||
clearLog();
|
||||
refreshProfileMenu();
|
||||
|
||||
@@ -844,11 +991,12 @@ void MainWindow::upgradeSettings()
|
||||
void MainWindow::updateVersionInfo()
|
||||
{
|
||||
const VersionInfo &versionInfo = updateChecker->versionInfo();
|
||||
ui->versionLabel->setText(
|
||||
"UI 版本:" + versionInfo.uiVersion + " 最新:" + versionInfo.uiLatest + "\n"
|
||||
"核心版本:" + versionInfo.coreVersion + " 最新:" + versionInfo.coreLatest + "\n"
|
||||
"当前配置:" + (currentProfileId.isEmpty() ? "默认" : currentProfileId)
|
||||
);
|
||||
ui->versionLabel->setText("版本 " + versionInfo.uiVersion);
|
||||
ui->versionLabel->setToolTip(
|
||||
"UI 版本:" + versionInfo.uiVersion + "(最新:" + versionInfo.uiLatest + ")\n"
|
||||
"核心版本:" + versionInfo.coreVersion + "(最新:" + versionInfo.coreLatest + ")"
|
||||
);
|
||||
updateProfileSummary();
|
||||
}
|
||||
|
||||
void MainWindow::showNotification(const QString &title, const QString &content, QSystemTrayIcon::MessageIcon icon)
|
||||
|
||||
@@ -53,6 +53,12 @@ private:
|
||||
|
||||
void resetZjuConnectUi();
|
||||
|
||||
void applyColorScheme(Qt::ColorScheme scheme);
|
||||
|
||||
void updateConnectionState(ConnectionState state);
|
||||
|
||||
void updateProfileSummary();
|
||||
|
||||
void showNotification(
|
||||
const QString &title,
|
||||
const QString &content,
|
||||
|
||||
@@ -6,142 +6,442 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>600</width>
|
||||
<height>325</height>
|
||||
<width>822</width>
|
||||
<height>583</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>600</width>
|
||||
<height>400</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>EZ4Connect</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="4" column="5">
|
||||
<widget class="QPushButton" name="pushButton2">
|
||||
<property name="text">
|
||||
<string>设置系统代理</string>
|
||||
<layout class="QVBoxLayout" name="pageLayout">
|
||||
<property name="spacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="headerLayout">
|
||||
<property name="spacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
</widget>
|
||||
<item>
|
||||
<widget class="QLabel" name="applicationIconLabel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>44</width>
|
||||
<height>44</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>44</width>
|
||||
<height>44</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="../../resource.qrc">:/resource/icon.png</pixmap>
|
||||
</property>
|
||||
<property name="scaledContents">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="brandLayout">
|
||||
<property name="spacing">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="applicationNameLabel">
|
||||
<property name="text">
|
||||
<string>EZ4Connect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="versionLabel">
|
||||
<property name="text">
|
||||
<string>版本 dev</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="applicationSubtitleLabel">
|
||||
<property name="text">
|
||||
<string>支持 aTrust 与 EasyConnect 协议</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="headerSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="guidePushButton">
|
||||
<property name="toolTip">
|
||||
<string>打开配置引导</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>配置引导</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="settingPushButton">
|
||||
<property name="toolTip">
|
||||
<string>打开完整设置</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>设置</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QPushButton" name="pushButton1">
|
||||
<property name="text">
|
||||
<string>连接服务器</string>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="workspaceLayout" stretch="0,1">
|
||||
<property name="spacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="4" colspan="3">
|
||||
<widget class="QPlainTextEdit" name="logPlainTextEdit">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="maximumBlockCount">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3" colspan="3">
|
||||
<widget class="QLabel" name="accountLabel">
|
||||
<property name="text">
|
||||
<string>ZJU-Connect 图形界面
|
||||
支持 aTrust 和 EasyConnect 协议
|
||||
|
||||
如遇问题欢迎加入 QQ 群 1037726410 反馈</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3" colspan="3">
|
||||
<widget class="QLabel" name="versionLabel">
|
||||
<property name="text">
|
||||
<string>Line 1
|
||||
Line 2
|
||||
Line3</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="4">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Policy::Minimum</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="3" colspan="3">
|
||||
<widget class="QLabel" name="applicationNameLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>20</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>关注 HITSZ OSA 谢谢喵!n(*≧▽≦*)n</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>EZ4Connect</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QPushButton" name="copyLogPushButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>复制日志到剪贴板</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>复制日志</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QPushButton" name="clearLogPushButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>清空窗口中的日志</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>清空日志</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<item>
|
||||
<widget class="QFrame" name="controlPanel">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>280</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>336</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::StyledPanel</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="controlLayout">
|
||||
<property name="spacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="connectionEyebrowLabel">
|
||||
<property name="text">
|
||||
<string>VPN 连接</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="statusLayout">
|
||||
<property name="spacing">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="statusIndicator">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>10</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>10</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="statusTitleLabel">
|
||||
<property name="text">
|
||||
<string>尚未连接</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="statusSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="statusDetailLabel">
|
||||
<property name="text">
|
||||
<string>连接后即可访问校园网络资源。</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton1">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>48</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>连接服务器</string>
|
||||
</property>
|
||||
<property name="default">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>42</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>设置系统代理</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="controlDivider">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::HLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Shadow::Sunken</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="profileEyebrowLabel">
|
||||
<property name="text">
|
||||
<string>当前配置</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="profileNameLabel">
|
||||
<property name="text">
|
||||
<string>默认</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="profileDetailLabel">
|
||||
<property name="text">
|
||||
<string>EasyConnect · 等待连接</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="controlBottomSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="qqGroupLabel">
|
||||
<property name="text">
|
||||
<string>如遇问题加 QQ 群反馈:1037726410</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="logPanel">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::StyledPanel</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="logPanelLayout">
|
||||
<property name="spacing">
|
||||
<number>14</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="logHeaderLayout">
|
||||
<property name="spacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="logTitleLayout">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="logTitleLabel">
|
||||
<property name="text">
|
||||
<string>运行日志</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="logSubtitleLabel">
|
||||
<property name="text">
|
||||
<string>连接过程与诊断信息</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="logHeaderSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="openLogPushButton">
|
||||
<property name="toolTip">
|
||||
<string>在系统中打开完整日志文件</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>打开日志文件</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="copyLogPushButton">
|
||||
<property name="toolTip">
|
||||
<string>复制日志到剪贴板</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>复制</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="clearLogPushButton">
|
||||
<property name="toolTip">
|
||||
<string>清空窗口中的日志</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>清空</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="logPlainTextEdit">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="maximumBlockCount">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>连接日志将在这里显示</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@@ -150,28 +450,10 @@ Line3</string>
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>600</width>
|
||||
<width>822</width>
|
||||
<height>33</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QMenu::item {
|
||||
padding: 5px 10px 5px 10px;
|
||||
}
|
||||
QMenu::item:selected {
|
||||
background-color: rgb(0, 85, 127);
|
||||
color: rgb(255, 255, 255);
|
||||
}
|
||||
</string>
|
||||
</property>
|
||||
<widget class="QMenu" name="helpMenu">
|
||||
<property name="title">
|
||||
<string>帮助</string>
|
||||
</property>
|
||||
<addaction name="checkUpdateAction"/>
|
||||
<addaction name="projectAction"/>
|
||||
<addaction name="aboutAction"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="fileMenu">
|
||||
<property name="title">
|
||||
<string>文件</string>
|
||||
@@ -192,6 +474,14 @@ Line3</string>
|
||||
</property>
|
||||
<addaction name="configurationGuideAction"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="helpMenu">
|
||||
<property name="title">
|
||||
<string>帮助</string>
|
||||
</property>
|
||||
<addaction name="checkUpdateAction"/>
|
||||
<addaction name="projectAction"/>
|
||||
<addaction name="aboutAction"/>
|
||||
</widget>
|
||||
<addaction name="fileMenu"/>
|
||||
<addaction name="profileMenu"/>
|
||||
<addaction name="helpMenu"/>
|
||||
@@ -200,9 +490,6 @@ Line3</string>
|
||||
<property name="text">
|
||||
<string>关于本软件</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>关于本软件</string>
|
||||
</property>
|
||||
<property name="menuRole">
|
||||
<enum>QAction::MenuRole::AboutRole</enum>
|
||||
</property>
|
||||
@@ -277,8 +564,16 @@ Line3</string>
|
||||
</action>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>guidePushButton</tabstop>
|
||||
<tabstop>settingPushButton</tabstop>
|
||||
<tabstop>pushButton1</tabstop>
|
||||
<tabstop>pushButton2</tabstop>
|
||||
<tabstop>logPlainTextEdit</tabstop>
|
||||
<tabstop>copyLogPushButton</tabstop>
|
||||
<tabstop>clearLogPushButton</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<resources>
|
||||
<include location="../../resource.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<RCC>
|
||||
<qresource>
|
||||
<file>resource/icon.png</file>
|
||||
<file>resource/mainwindow.qss</file>
|
||||
<file>resource/mainwindow-light.qss</file>
|
||||
<file>resource/mainwindow-dark.qss</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
204
resource/mainwindow-dark.qss
Normal file
204
resource/mainwindow-dark.qss
Normal file
@@ -0,0 +1,204 @@
|
||||
QMainWindow {
|
||||
background: #141b20;
|
||||
}
|
||||
|
||||
QLabel,
|
||||
QPlainTextEdit,
|
||||
QMenuBar,
|
||||
QMenu {
|
||||
color: #e6edf1;
|
||||
}
|
||||
|
||||
QMenuBar {
|
||||
background: #141b20;
|
||||
border-bottom-color: #2d3a42;
|
||||
}
|
||||
|
||||
QMenuBar::item:selected {
|
||||
background: #24323a;
|
||||
}
|
||||
|
||||
QMenu {
|
||||
background: #1d272d;
|
||||
border-color: #354650;
|
||||
}
|
||||
|
||||
QMenu::item:selected {
|
||||
background: #243f4d;
|
||||
color: #9fdcff;
|
||||
}
|
||||
|
||||
#applicationNameLabel {
|
||||
color: #f0f5f7;
|
||||
}
|
||||
|
||||
#applicationSubtitleLabel,
|
||||
#logSubtitleLabel,
|
||||
#logHintLabel,
|
||||
#supportLabel {
|
||||
color: #9eafb9;
|
||||
}
|
||||
|
||||
#versionLabel {
|
||||
background: #26333b;
|
||||
color: #bdcbd3;
|
||||
}
|
||||
|
||||
#controlPanel,
|
||||
#logPanel {
|
||||
background: #1c252b;
|
||||
border-color: #30404a;
|
||||
}
|
||||
|
||||
#connectionEyebrowLabel,
|
||||
#profileEyebrowLabel {
|
||||
color: #a4b4bd;
|
||||
}
|
||||
|
||||
#statusTitleLabel,
|
||||
#profileNameLabel,
|
||||
#logTitleLabel {
|
||||
color: #edf3f6;
|
||||
}
|
||||
|
||||
#statusDetailLabel,
|
||||
#profileDetailLabel,
|
||||
#qqGroupLabel {
|
||||
color: #acbac2;
|
||||
}
|
||||
|
||||
#statusIndicator {
|
||||
background: #71838e;
|
||||
}
|
||||
|
||||
#statusIndicator[connectionState="starting"],
|
||||
#statusIndicator[connectionState="reconnecting"] {
|
||||
background: #dfa24f;
|
||||
}
|
||||
|
||||
#statusIndicator[connectionState="running"] {
|
||||
background: #55b9e7;
|
||||
}
|
||||
|
||||
#statusIndicator[connectionState="stopping"] {
|
||||
background: #8b9ca6;
|
||||
}
|
||||
|
||||
#statusIndicator[connectionState="failed"] {
|
||||
background: #dc7777;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton,
|
||||
QPushButton#settingPushButton,
|
||||
QPushButton#pushButton1,
|
||||
QPushButton#pushButton2,
|
||||
QPushButton#openLogPushButton,
|
||||
QPushButton#copyLogPushButton,
|
||||
QPushButton#clearLogPushButton {
|
||||
background: #243038;
|
||||
border-color: #40545f;
|
||||
color: #dfe8ed;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:hover,
|
||||
QPushButton#settingPushButton:hover,
|
||||
QPushButton#pushButton1:hover,
|
||||
QPushButton#pushButton2:hover,
|
||||
QPushButton#openLogPushButton:hover,
|
||||
QPushButton#copyLogPushButton:hover,
|
||||
QPushButton#clearLogPushButton:hover {
|
||||
background: #2b3b44;
|
||||
border-color: #5d7684;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:pressed,
|
||||
QPushButton#settingPushButton:pressed,
|
||||
QPushButton#pushButton1:pressed,
|
||||
QPushButton#pushButton2:pressed,
|
||||
QPushButton#openLogPushButton:pressed,
|
||||
QPushButton#copyLogPushButton:pressed,
|
||||
QPushButton#clearLogPushButton:pressed {
|
||||
background: #192329;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:focus,
|
||||
QPushButton#settingPushButton:focus,
|
||||
QPushButton#pushButton1:focus,
|
||||
QPushButton#pushButton2:focus,
|
||||
QPushButton#openLogPushButton:focus,
|
||||
QPushButton#copyLogPushButton:focus,
|
||||
QPushButton#clearLogPushButton:focus {
|
||||
border-color: #69c4ed;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:disabled,
|
||||
QPushButton#settingPushButton:disabled,
|
||||
QPushButton#pushButton1:disabled,
|
||||
QPushButton#pushButton2:disabled,
|
||||
QPushButton#openLogPushButton:disabled,
|
||||
QPushButton#copyLogPushButton:disabled,
|
||||
QPushButton#clearLogPushButton:disabled {
|
||||
background: #1d272d;
|
||||
border-color: #2f3e46;
|
||||
color: #71818a;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1 {
|
||||
background: #55b9e7;
|
||||
border-color: #55b9e7;
|
||||
color: #081820;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1:hover {
|
||||
background: #6bc7ee;
|
||||
border-color: #6bc7ee;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1:pressed {
|
||||
background: #3aa5d5;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1[connectionState="running"],
|
||||
QPushButton#pushButton1[connectionState="starting"],
|
||||
QPushButton#pushButton1[connectionState="reconnecting"] {
|
||||
background: #302626;
|
||||
border-color: #765252;
|
||||
color: #efaaaa;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1[connectionState="running"]:hover,
|
||||
QPushButton#pushButton1[connectionState="starting"]:hover,
|
||||
QPushButton#pushButton1[connectionState="reconnecting"]:hover {
|
||||
background: #3a2929;
|
||||
border-color: #a46a6a;
|
||||
}
|
||||
|
||||
QPushButton#pushButton2 {
|
||||
background: #203744;
|
||||
border-color: #37647a;
|
||||
color: #9fdcff;
|
||||
}
|
||||
|
||||
#controlDivider {
|
||||
color: #30404a;
|
||||
}
|
||||
|
||||
#logPlainTextEdit {
|
||||
background: #141c21;
|
||||
border-color: #30404a;
|
||||
color: #dae5ea;
|
||||
selection-background-color: #285b73;
|
||||
selection-color: #f1f7fa;
|
||||
}
|
||||
|
||||
#logPlainTextEdit:focus {
|
||||
border-color: #5799b8;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical {
|
||||
background: #485b66;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:hover {
|
||||
background: #617784;
|
||||
}
|
||||
204
resource/mainwindow-light.qss
Normal file
204
resource/mainwindow-light.qss
Normal file
@@ -0,0 +1,204 @@
|
||||
QMainWindow {
|
||||
background: #f2f7fa;
|
||||
}
|
||||
|
||||
QLabel,
|
||||
QPlainTextEdit,
|
||||
QMenuBar,
|
||||
QMenu {
|
||||
color: #202a31;
|
||||
}
|
||||
|
||||
QMenuBar {
|
||||
background: #f2f7fa;
|
||||
border-bottom-color: #dbe5eb;
|
||||
}
|
||||
|
||||
QMenuBar::item:selected {
|
||||
background: #e2f0f7;
|
||||
}
|
||||
|
||||
QMenu {
|
||||
background: #ffffff;
|
||||
border-color: #d5e1e8;
|
||||
}
|
||||
|
||||
QMenu::item:selected {
|
||||
background: #e1f1f9;
|
||||
color: #176b92;
|
||||
}
|
||||
|
||||
#applicationNameLabel {
|
||||
color: #18242b;
|
||||
}
|
||||
|
||||
#applicationSubtitleLabel,
|
||||
#logSubtitleLabel,
|
||||
#logHintLabel,
|
||||
#supportLabel {
|
||||
color: #687985;
|
||||
}
|
||||
|
||||
#versionLabel {
|
||||
background: #e3eef4;
|
||||
color: #506b7a;
|
||||
}
|
||||
|
||||
#controlPanel,
|
||||
#logPanel {
|
||||
background: #ffffff;
|
||||
border-color: #d7e3e9;
|
||||
}
|
||||
|
||||
#connectionEyebrowLabel,
|
||||
#profileEyebrowLabel {
|
||||
color: #6b7d88;
|
||||
}
|
||||
|
||||
#statusTitleLabel,
|
||||
#profileNameLabel,
|
||||
#logTitleLabel {
|
||||
color: #202a31;
|
||||
}
|
||||
|
||||
#statusDetailLabel,
|
||||
#profileDetailLabel,
|
||||
#qqGroupLabel {
|
||||
color: #60727d;
|
||||
}
|
||||
|
||||
#statusIndicator {
|
||||
background: #9eacb5;
|
||||
}
|
||||
|
||||
#statusIndicator[connectionState="starting"],
|
||||
#statusIndicator[connectionState="reconnecting"] {
|
||||
background: #bc7a27;
|
||||
}
|
||||
|
||||
#statusIndicator[connectionState="running"] {
|
||||
background: #278bb9;
|
||||
}
|
||||
|
||||
#statusIndicator[connectionState="stopping"] {
|
||||
background: #71808a;
|
||||
}
|
||||
|
||||
#statusIndicator[connectionState="failed"] {
|
||||
background: #b94b4b;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton,
|
||||
QPushButton#settingPushButton,
|
||||
QPushButton#pushButton1,
|
||||
QPushButton#pushButton2,
|
||||
QPushButton#openLogPushButton,
|
||||
QPushButton#copyLogPushButton,
|
||||
QPushButton#clearLogPushButton {
|
||||
background: #ffffff;
|
||||
border-color: #c8d7df;
|
||||
color: #2e3b43;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:hover,
|
||||
QPushButton#settingPushButton:hover,
|
||||
QPushButton#pushButton1:hover,
|
||||
QPushButton#pushButton2:hover,
|
||||
QPushButton#openLogPushButton:hover,
|
||||
QPushButton#copyLogPushButton:hover,
|
||||
QPushButton#clearLogPushButton:hover {
|
||||
background: #f0f7fa;
|
||||
border-color: #a9c2cf;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:pressed,
|
||||
QPushButton#settingPushButton:pressed,
|
||||
QPushButton#pushButton1:pressed,
|
||||
QPushButton#pushButton2:pressed,
|
||||
QPushButton#openLogPushButton:pressed,
|
||||
QPushButton#copyLogPushButton:pressed,
|
||||
QPushButton#clearLogPushButton:pressed {
|
||||
background: #e3eff4;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:focus,
|
||||
QPushButton#settingPushButton:focus,
|
||||
QPushButton#pushButton1:focus,
|
||||
QPushButton#pushButton2:focus,
|
||||
QPushButton#openLogPushButton:focus,
|
||||
QPushButton#copyLogPushButton:focus,
|
||||
QPushButton#clearLogPushButton:focus {
|
||||
border-color: #167aa8;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:disabled,
|
||||
QPushButton#settingPushButton:disabled,
|
||||
QPushButton#pushButton1:disabled,
|
||||
QPushButton#pushButton2:disabled,
|
||||
QPushButton#openLogPushButton:disabled,
|
||||
QPushButton#copyLogPushButton:disabled,
|
||||
QPushButton#clearLogPushButton:disabled {
|
||||
background: #edf2f4;
|
||||
border-color: #dde5e9;
|
||||
color: #9ca8ae;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1 {
|
||||
background: #167aa8;
|
||||
border-color: #167aa8;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1:hover {
|
||||
background: #126b94;
|
||||
border-color: #126b94;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1:pressed {
|
||||
background: #0f5a7d;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1[connectionState="running"],
|
||||
QPushButton#pushButton1[connectionState="starting"],
|
||||
QPushButton#pushButton1[connectionState="reconnecting"] {
|
||||
background: #ffffff;
|
||||
border-color: #c9aaa7;
|
||||
color: #943f3f;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1[connectionState="running"]:hover,
|
||||
QPushButton#pushButton1[connectionState="starting"]:hover,
|
||||
QPushButton#pushButton1[connectionState="reconnecting"]:hover {
|
||||
background: #fbf3f2;
|
||||
border-color: #b9807c;
|
||||
}
|
||||
|
||||
QPushButton#pushButton2 {
|
||||
background: #e7f4fa;
|
||||
border-color: #bddce9;
|
||||
color: #176f98;
|
||||
}
|
||||
|
||||
#controlDivider {
|
||||
color: #dce6eb;
|
||||
}
|
||||
|
||||
#logPlainTextEdit {
|
||||
background: #f6f9fb;
|
||||
border-color: #dce6eb;
|
||||
color: #2e3b43;
|
||||
selection-background-color: #c4e5f4;
|
||||
selection-color: #153746;
|
||||
}
|
||||
|
||||
#logPlainTextEdit:focus {
|
||||
border-color: #65a6c4;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical {
|
||||
background: #c2cfd6;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:hover {
|
||||
background: #a5b7c0;
|
||||
}
|
||||
144
resource/mainwindow.qss
Normal file
144
resource/mainwindow.qss
Normal file
@@ -0,0 +1,144 @@
|
||||
QLabel,
|
||||
QPlainTextEdit,
|
||||
QMenuBar,
|
||||
QMenu {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
QMenuBar {
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-style: solid;
|
||||
padding: 3px 10px;
|
||||
}
|
||||
|
||||
QMenuBar::item {
|
||||
background: transparent;
|
||||
border-radius: 4px;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
QMenu {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
QMenu::item {
|
||||
border-radius: 4px;
|
||||
padding: 7px 24px 7px 10px;
|
||||
}
|
||||
|
||||
#applicationNameLabel {
|
||||
font-size: 21px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#applicationSubtitleLabel,
|
||||
#logSubtitleLabel,
|
||||
#logHintLabel,
|
||||
#supportLabel {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#versionLabel {
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
margin-left: 6px;
|
||||
padding: 4px 6px;
|
||||
}
|
||||
|
||||
#controlPanel,
|
||||
#logPanel {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
#connectionEyebrowLabel,
|
||||
#profileEyebrowLabel {
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#statusTitleLabel {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#profileNameLabel,
|
||||
#logTitleLabel {
|
||||
font-size: 17px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#statusIndicator {
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton,
|
||||
QPushButton#settingPushButton,
|
||||
QPushButton#pushButton1,
|
||||
QPushButton#pushButton2,
|
||||
QPushButton#openLogPushButton,
|
||||
QPushButton#copyLogPushButton,
|
||||
QPushButton#clearLogPushButton {
|
||||
min-height: 34px;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 5px;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
padding: 0 14px;
|
||||
}
|
||||
|
||||
QPushButton#guidePushButton:focus,
|
||||
QPushButton#settingPushButton:focus,
|
||||
QPushButton#pushButton1:focus,
|
||||
QPushButton#pushButton2:focus,
|
||||
QPushButton#openLogPushButton:focus,
|
||||
QPushButton#copyLogPushButton:focus,
|
||||
QPushButton#clearLogPushButton:focus {
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
QPushButton#pushButton1 {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#guidePushButton,
|
||||
#settingPushButton,
|
||||
#copyLogPushButton,
|
||||
#clearLogPushButton,
|
||||
#openLogPushButton {
|
||||
min-height: 32px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#logPlainTextEdit {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 5px;
|
||||
font-size: 12px;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
QScrollBar:vertical {
|
||||
background: transparent;
|
||||
margin: 4px 2px;
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical {
|
||||
border-radius: 4px;
|
||||
min-height: 30px;
|
||||
}
|
||||
|
||||
QScrollBar::add-line:vertical,
|
||||
QScrollBar::sub-line:vertical,
|
||||
QScrollBar::add-page:vertical,
|
||||
QScrollBar::sub-page:vertical {
|
||||
background: transparent;
|
||||
height: 0;
|
||||
}
|
||||
Reference in New Issue
Block a user