修改设置界面为独立弹窗
parent
ca35018346
commit
9b53ef9764
Binary file not shown.
|
@ -101,9 +101,7 @@
|
||||||
<ClInclude Include="config.h" />
|
<ClInclude Include="config.h" />
|
||||||
<ClInclude Include="globalvariables.h" />
|
<ClInclude Include="globalvariables.h" />
|
||||||
<QtMoc Include="qminiblink.h" />
|
<QtMoc Include="qminiblink.h" />
|
||||||
<QtMoc Include="settingsscreen.h" />
|
<QtMoc Include="mysettingsdialog.h" />
|
||||||
<QtMoc Include="switchbutton.h" />
|
|
||||||
<QtMoc Include="mythread.h" />
|
|
||||||
<ClInclude Include="wke.h" />
|
<ClInclude Include="wke.h" />
|
||||||
<QtMoc Include="mainwindowlayout.h" />
|
<QtMoc Include="mainwindowlayout.h" />
|
||||||
<QtMoc Include="mainwindow.h" />
|
<QtMoc Include="mainwindow.h" />
|
||||||
|
@ -118,22 +116,18 @@
|
||||||
<ClCompile Include="mainwindow.cpp" />
|
<ClCompile Include="mainwindow.cpp" />
|
||||||
<ClCompile Include="mainwindowlayout.cpp" />
|
<ClCompile Include="mainwindowlayout.cpp" />
|
||||||
<ClCompile Include="MyButton.cpp" />
|
<ClCompile Include="MyButton.cpp" />
|
||||||
<ClCompile Include="mythread.cpp" />
|
<ClCompile Include="mysettingsdialog.cpp" />
|
||||||
<ClCompile Include="navbar.cpp" />
|
<ClCompile Include="navbar.cpp" />
|
||||||
<ClCompile Include="netio.cpp" />
|
<ClCompile Include="netio.cpp" />
|
||||||
<ClCompile Include="qminiblink.cpp" />
|
<ClCompile Include="qminiblink.cpp" />
|
||||||
<ClCompile Include="settingsscreen.cpp" />
|
|
||||||
<ClCompile Include="switchbutton.cpp" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<QtUic Include="mainscreen.ui" />
|
<QtUic Include="mainscreen.ui" />
|
||||||
<QtUic Include="mainwindow.ui" />
|
<QtUic Include="mainwindow.ui" />
|
||||||
<QtUic Include="mainwindowlayout.ui" />
|
<QtUic Include="mainwindowlayout.ui" />
|
||||||
|
<QtUic Include="mysettingsdialog.ui" />
|
||||||
<QtUic Include="navbar.ui" />
|
<QtUic Include="navbar.ui" />
|
||||||
<QtUic Include="qminiblink.ui" />
|
<QtUic Include="qminiblink.ui" />
|
||||||
<QtUic Include="qtwidgetsclass.ui" />
|
|
||||||
<QtUic Include="settingsscreen.ui" />
|
|
||||||
<QtUic Include="switchbutton.ui" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
||||||
|
|
|
@ -63,13 +63,7 @@
|
||||||
<QtMoc Include="qminiblink.h">
|
<QtMoc Include="qminiblink.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</QtMoc>
|
</QtMoc>
|
||||||
<QtMoc Include="settingsscreen.h">
|
<QtMoc Include="mysettingsdialog.h">
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="switchbutton.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="mythread.h">
|
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</QtMoc>
|
</QtMoc>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -98,13 +92,7 @@
|
||||||
<ClCompile Include="qminiblink.cpp">
|
<ClCompile Include="qminiblink.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="settingsscreen.cpp">
|
<ClCompile Include="mysettingsdialog.cpp">
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="switchbutton.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="mythread.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -121,17 +109,11 @@
|
||||||
<QtUic Include="mainwindowlayout.ui">
|
<QtUic Include="mainwindowlayout.ui">
|
||||||
<Filter>Form Files</Filter>
|
<Filter>Form Files</Filter>
|
||||||
</QtUic>
|
</QtUic>
|
||||||
<QtUic Include="settingsscreen.ui">
|
|
||||||
<Filter>Form Files</Filter>
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="qtwidgetsclass.ui">
|
|
||||||
<Filter>Form Files</Filter>
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="switchbutton.ui">
|
|
||||||
<Filter>Form Files</Filter>
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="qminiblink.ui">
|
<QtUic Include="qminiblink.ui">
|
||||||
<Filter>Form Files</Filter>
|
<Filter>Form Files</Filter>
|
||||||
</QtUic>
|
</QtUic>
|
||||||
|
<QtUic Include="mysettingsdialog.ui">
|
||||||
|
<Filter>Form Files</Filter>
|
||||||
|
</QtUic>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -5,9 +5,9 @@
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<QtLastBackgroundBuild>2023-07-30T18:20:21.4819233Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2023-08-01T03:05:45.8140795Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<QtLastBackgroundBuild>2023-07-30T18:20:22.3001457Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2023-08-01T03:05:46.4588999Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -11,7 +11,6 @@
|
||||||
#include <exception>
|
#include <exception>
|
||||||
#include <QResizeEvent>
|
#include <QResizeEvent>
|
||||||
#include "globalvariables.h"
|
#include "globalvariables.h"
|
||||||
#include "settingsscreen.h"
|
|
||||||
#include "mythread.h"
|
#include "mythread.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
@ -33,12 +32,8 @@ MainScreen::MainScreen(QWidget *parent) :
|
||||||
button->setText(QString::fromLocal8Bit("´ò¿ªÎ¢ÐÅ"));
|
button->setText(QString::fromLocal8Bit("´ò¿ªÎ¢ÐÅ"));
|
||||||
layout = new QHBoxLayout;
|
layout = new QHBoxLayout;
|
||||||
miniblink = new QMiniBlink(this);
|
miniblink = new QMiniBlink(this);
|
||||||
settingScreen = new SettingsScreen;
|
|
||||||
settingScreen->setMinimumHeight(height());
|
|
||||||
settingScreen->setHidden(true);
|
|
||||||
layout->addWidget(widget, 1);
|
layout->addWidget(widget, 1);
|
||||||
layout->addWidget(miniblink, 4);
|
layout->addWidget(miniblink, 4);
|
||||||
layout->addWidget(settingScreen);
|
|
||||||
this->setLayout(layout);
|
this->setLayout(layout);
|
||||||
layout->setMargin(0);
|
layout->setMargin(0);
|
||||||
//miniblink->setAttribute(Qt::WA_DeleteOnClose);
|
//miniblink->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
@ -65,10 +60,8 @@ MainScreen::~MainScreen() {
|
||||||
delete button;
|
delete button;
|
||||||
emit ondestroy();
|
emit ondestroy();
|
||||||
layout->removeWidget(miniblink);
|
layout->removeWidget(miniblink);
|
||||||
layout->removeWidget(settingScreen);
|
|
||||||
layout->removeWidget(widget);
|
layout->removeWidget(widget);
|
||||||
delete miniblink;
|
delete miniblink;
|
||||||
delete settingScreen;
|
|
||||||
delete widget;
|
delete widget;
|
||||||
delete layout;
|
delete layout;
|
||||||
delete ui;
|
delete ui;
|
||||||
|
@ -83,26 +76,17 @@ void MainScreen::clickButton1(QString text, QString url) {
|
||||||
if (text == QString::fromLocal8Bit("΢ÐŶ࿪")) {
|
if (text == QString::fromLocal8Bit("΢ÐŶ࿪")) {
|
||||||
widget->setHidden(false);
|
widget->setHidden(false);
|
||||||
miniblink->setHidden(false);
|
miniblink->setHidden(false);
|
||||||
settingScreen->setHidden(true);
|
|
||||||
emit changeUrl(url_full);
|
emit changeUrl(url_full);
|
||||||
|
|
||||||
}
|
|
||||||
else if (text == QString::fromLocal8Bit("Èí¼þÉèÖÃ")){
|
|
||||||
miniblink->setHidden(true);
|
|
||||||
widget->setHidden(true);
|
|
||||||
settingScreen->setHidden(false);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
widget->setHidden(true);
|
widget->setHidden(true);
|
||||||
miniblink->setHidden(false);
|
miniblink->setHidden(false);
|
||||||
settingScreen->setHidden(true);
|
|
||||||
emit changeUrl(url_full);
|
emit changeUrl(url_full);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void MainScreen::startWeChat() {
|
void MainScreen::startWeChat() {
|
||||||
QString path = QApplication::applicationDirPath();
|
QString path = QApplication::applicationDirPath();
|
||||||
QString exe = path + "/wxdk.exe";
|
QString exe = path + "/app/wxdk.exe";
|
||||||
ShellExecute(GetDesktopWindow(), L"open", exe.toStdWString().c_str(), L"79c86fb12b36dfa33d1a537c9af100b4c7928a9c", path.toStdWString().c_str(), SW_SHOW);
|
ShellExecute(GetDesktopWindow(), L"open", exe.toStdWString().c_str(), L"79c86fb12b36dfa33d1a537c9af100b4c7928a9c", path.toStdWString().c_str(), SW_SHOW);
|
||||||
}
|
}
|
||||||
//void MainScreen::resizeEvent(QResizeEvent *event) {
|
//void MainScreen::resizeEvent(QResizeEvent *event) {
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include "wke.h"
|
#include "wke.h"
|
||||||
#include "qminiblink.h"
|
#include "qminiblink.h"
|
||||||
#include "settingsscreen.h"
|
|
||||||
class MyThread;
|
class MyThread;
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class MainScreen; }
|
namespace Ui { class MainScreen; }
|
||||||
|
@ -43,7 +42,6 @@ private:
|
||||||
QWidget *widget;
|
QWidget *widget;
|
||||||
MyThread *thread;
|
MyThread *thread;
|
||||||
QMiniBlink *miniblink;
|
QMiniBlink *miniblink;
|
||||||
SettingsScreen *settingScreen;
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void startWeChat();
|
void startWeChat();
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include "mainwindowlayout.h"
|
#include "mainwindowlayout.h"
|
||||||
#include "ui_MainWindowLayout.h"
|
#include "ui_MainWindowLayout.h"
|
||||||
|
#include "mysettingsdialog.h"
|
||||||
|
|
||||||
MainWindowLayout::MainWindowLayout(QWidget *parent) :
|
MainWindowLayout::MainWindowLayout(QWidget *parent) :
|
||||||
QWidget(parent), ui(new Ui::MainWindowLayout) {
|
QWidget(parent), ui(new Ui::MainWindowLayout) {
|
||||||
|
@ -47,10 +48,15 @@ void MainWindowLayout::resizeEvent(QResizeEvent *event) {
|
||||||
|
|
||||||
void MainWindowLayout::clickButton(QString text, QString url) {
|
void MainWindowLayout::clickButton(QString text, QString url) {
|
||||||
QString path = QApplication::applicationDirPath();
|
QString path = QApplication::applicationDirPath();
|
||||||
path += "/startcalc.exe";
|
path += "/app/startcalc.exe";
|
||||||
if (text== QString::fromLocal8Bit("¼ÆËãÆ÷")) {
|
if (text== QString::fromLocal8Bit("¼ÆËãÆ÷")) {
|
||||||
WinExec(path.toStdString().c_str(), SW_SHOW);
|
WinExec(path.toStdString().c_str(), SW_SHOW);
|
||||||
}
|
}
|
||||||
|
else if (text == QString::fromLocal8Bit("软件设置")) {
|
||||||
|
MySettingsDialog *settings = new MySettingsDialog;
|
||||||
|
settings->exec();
|
||||||
|
delete settings;
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
emit clickButton1(text, url);
|
emit clickButton1(text, url);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
#include "mysettingsdialog.h"
|
||||||
|
#include <Windows.h>
|
||||||
|
#include <QClipBoard>
|
||||||
|
#include "netio.h"
|
||||||
|
#include "globalvariables.h"
|
||||||
|
MySettingsDialog::MySettingsDialog(QWidget *parent)
|
||||||
|
: QDialog(parent)
|
||||||
|
{
|
||||||
|
ui.setupUi(this);
|
||||||
|
this->setFixedSize(width(), height());
|
||||||
|
HKEY hRoot = HKEY_CURRENT_USER;
|
||||||
|
wchar_t *szSubKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
|
||||||
|
HKEY hKey;
|
||||||
|
DWORD dwDisposition = REG_OPENED_EXISTING_KEY; // 如果不存在不创建
|
||||||
|
LONG lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL,
|
||||||
|
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
|
||||||
|
if (lRet != ERROR_SUCCESS) {
|
||||||
|
ui.autostart->setDisabled(true);
|
||||||
|
}
|
||||||
|
QString app = QApplication::applicationFilePath();
|
||||||
|
app.replace("/", "\\");
|
||||||
|
DWORD size=128;
|
||||||
|
wchar_t reg[128];
|
||||||
|
lRet = RegGetValue(hRoot, szSubKey, L"OfficeAssistant", RRF_RT_ANY, nullptr, reg, &size);
|
||||||
|
if (wcscmp(reg,app.toStdWString().c_str())==0) {
|
||||||
|
ui.autostart->setChecked(true);
|
||||||
|
}
|
||||||
|
copyButton = ui.copy;
|
||||||
|
connect(copyButton, &QPushButton::clicked, this, &MySettingsDialog::copyToCLipboard);
|
||||||
|
connect(ui.autostart, &QCheckBox::stateChanged, this, &MySettingsDialog::autoStart);
|
||||||
|
connect(ui.addshortcut, &QPushButton::clicked, this, &MySettingsDialog::createShortcut);
|
||||||
|
connect(ui.law_button, &QPushButton::clicked, this, &MySettingsDialog::law);
|
||||||
|
ui.code->setText(QString(QCryptographicHash::hash(getMachineGUID().toUtf8(), QCryptographicHash::Md5).toHex()));
|
||||||
|
}
|
||||||
|
|
||||||
|
MySettingsDialog::~MySettingsDialog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void MySettingsDialog::autoStart(int state)
|
||||||
|
{
|
||||||
|
if (state == Qt::Checked) {
|
||||||
|
HKEY hRoot = HKEY_CURRENT_USER;
|
||||||
|
wchar_t *szSubKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
|
||||||
|
HKEY hKey;
|
||||||
|
DWORD dwDisposition = REG_OPENED_EXISTING_KEY; // 如果不存在不创建
|
||||||
|
LONG lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL,
|
||||||
|
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
|
||||||
|
if (lRet != ERROR_SUCCESS) {
|
||||||
|
QMessageBox::critical(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("创建开机启动项失败"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QString app = QApplication::applicationFilePath();
|
||||||
|
app.replace("/", "\\");
|
||||||
|
qDebug() << app.toStdWString().c_str();
|
||||||
|
lRet = RegSetValueEx(hKey, L"OfficeAssistant", 0, REG_SZ, (BYTE*)app.toStdWString().c_str(), app.length()*sizeof(wchar_t));
|
||||||
|
if (lRet == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("创建开机启动项成功"));
|
||||||
|
}
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
else if (state == Qt::Unchecked) {
|
||||||
|
HKEY hRoot = HKEY_CURRENT_USER;
|
||||||
|
wchar_t *szSubKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
|
||||||
|
HKEY hKey;
|
||||||
|
DWORD dwDisposition = REG_OPENED_EXISTING_KEY;
|
||||||
|
LONG lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL,
|
||||||
|
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
|
||||||
|
if (lRet != ERROR_SUCCESS) {
|
||||||
|
QMessageBox::critical(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("移除开机启动项失败。"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QString app = QApplication::applicationFilePath();
|
||||||
|
lRet = RegDeleteValue(hKey, L"OfficeAssistant");
|
||||||
|
if (lRet == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("移除开机启动项成功。"));
|
||||||
|
}
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MySettingsDialog::law()
|
||||||
|
{
|
||||||
|
QString path = QApplication::applicationDirPath();
|
||||||
|
QString license = path + "/license.txt";
|
||||||
|
license.replace("/", "\\");
|
||||||
|
ShellExecute(GetDesktopWindow(), L"open", L"notepad.exe" , license.toStdWString().c_str(), nullptr, SW_SHOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MySettingsDialog::copyToCLipboard() {
|
||||||
|
QClipboard *clip = QApplication::clipboard();
|
||||||
|
clip->setText(QString(QCryptographicHash::hash(getMachineGUID().toUtf8(), QCryptographicHash::Md5).toHex()));
|
||||||
|
}
|
||||||
|
void MySettingsDialog::createShortcut() {
|
||||||
|
QString deskTopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
|
||||||
|
deskTopPath = deskTopPath + QString::fromLocal8Bit("/办公助手.lnk");
|
||||||
|
QString srcFile = QApplication::applicationFilePath();
|
||||||
|
bool succeed=QFile::link(srcFile, deskTopPath);
|
||||||
|
if (succeed) {
|
||||||
|
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("创建快捷方式成功。"));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("创建快捷方式失败。"));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include "ui_mysettingsdialog.h"
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
|
class MySettingsDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
MySettingsDialog(QWidget *parent = Q_NULLPTR);
|
||||||
|
~MySettingsDialog();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::MySettingsDialog ui;
|
||||||
|
QPushButton *copyButton;
|
||||||
|
public slots:
|
||||||
|
void copyToCLipboard();
|
||||||
|
void createShortcut();
|
||||||
|
void autoStart(int state);
|
||||||
|
void law();
|
||||||
|
};
|
|
@ -0,0 +1,158 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>MySettingsDialog</class>
|
||||||
|
<widget class="QDialog" name="MySettingsDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>736</width>
|
||||||
|
<height>540</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>设置</string>
|
||||||
|
</property>
|
||||||
|
<property name="sizeGripEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="gridLayoutWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>70</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>581</width>
|
||||||
|
<height>381</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="hardware">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>硬件信息</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel" name="codetitle">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>108</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>硬件ID</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="code">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>130</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>401</width>
|
||||||
|
<height>24</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="copy">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>130</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>141</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>复制</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="settings">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>设置</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QCheckBox" name="autostart">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>138</width>
|
||||||
|
<height>28</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>开机启动</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="addshortcut">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>60</y>
|
||||||
|
<width>291</width>
|
||||||
|
<height>41</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>创建桌面快捷方式</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="law">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>法律声明</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton" name="law_button">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>291</width>
|
||||||
|
<height>46</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>查看法律声明和许可协议</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -70,12 +70,6 @@ RequestBodyBase::RequestBodyBase(){
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
release=obj_root.value("release").toString();
|
release=obj_root.value("release").toString();
|
||||||
if(obj_root.value("version")==QJsonValue::Undefined){
|
|
||||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("配置文件损坏"));
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
version=obj_root.value("version").toString();
|
|
||||||
device_id=obj_root.value("device_id").toString();
|
|
||||||
}else{
|
}else{
|
||||||
//处理错误
|
//处理错误
|
||||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("配置文件损坏"));
|
QMessageBox::warning(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("配置文件损坏"));
|
||||||
|
@ -113,30 +107,14 @@ RequestBodyBase::RequestBodyBase(){
|
||||||
default:
|
default:
|
||||||
os_version="Unknown";
|
os_version="Unknown";
|
||||||
}
|
}
|
||||||
//如果device_id是空值
|
|
||||||
if(device_id.isEmpty()){
|
|
||||||
//读取MachineGUID并取MD5作为device_id
|
//读取MachineGUID并取MD5作为device_id
|
||||||
QByteArray hash = QCryptographicHash::hash(getMachineGUID().toUtf8(), QCryptographicHash::Md5);
|
QByteArray hash = QCryptographicHash::hash(getMachineGUID().toUtf8(), QCryptographicHash::Md5);
|
||||||
device_id = hash.toHex();
|
device_id = hash.toHex();
|
||||||
infFile=new QFile(dir + "/config/information.kmd");
|
|
||||||
if(!infFile->open(QIODevice::WriteOnly|QIODevice::Text)){
|
|
||||||
//处理错误
|
|
||||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("错误"), QString::fromLocal8Bit("无法覆写配置文件"));
|
|
||||||
infFile->close();
|
|
||||||
delete infFile;
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
//加入json序列
|
//加入json序列
|
||||||
QJsonValue value = device_id;
|
QJsonValue value = device_id;
|
||||||
QJsonObject obj_root = qJsonDocument.object();
|
QJsonObject obj_root = qJsonDocument.object();
|
||||||
obj_root.insert("device_id", value);
|
obj_root.insert("device_id", value);
|
||||||
qJsonDocument.setObject(obj_root);
|
qJsonDocument.setObject(obj_root);
|
||||||
//写入配置文件
|
|
||||||
infFile->write(qJsonDocument.toJson());
|
|
||||||
//关闭文件;
|
|
||||||
infFile->close();
|
|
||||||
delete infFile;
|
|
||||||
}
|
|
||||||
QJsonValue os_json(this->os);
|
QJsonValue os_json(this->os);
|
||||||
QJsonValue os_version_json(this->os_version);
|
QJsonValue os_version_json(this->os_version);
|
||||||
QString key_hash = QCryptographicHash::hash(QString(KEY).toUtf8(), QCryptographicHash::Md5).toHex();
|
QString key_hash = QCryptographicHash::hash(QString(KEY).toUtf8(), QCryptographicHash::Md5).toHex();
|
||||||
|
@ -145,7 +123,7 @@ RequestBodyBase::RequestBodyBase(){
|
||||||
sign = sign_byte.toHex();
|
sign = sign_byte.toHex();
|
||||||
QJsonValue sign_json(sign);
|
QJsonValue sign_json(sign);
|
||||||
QJsonValue requestId_json=QJsonValue(request_id);
|
QJsonValue requestId_json=QJsonValue(request_id);
|
||||||
QJsonObject obj_root=qJsonDocument.object();
|
obj_root=qJsonDocument.object();
|
||||||
//插入request_id
|
//插入request_id
|
||||||
obj_root.insert(QString::fromLocal8Bit("request_id"),requestId_json);
|
obj_root.insert(QString::fromLocal8Bit("request_id"),requestId_json);
|
||||||
obj_root.insert(QString::fromLocal8Bit("os"), os_json);
|
obj_root.insert(QString::fromLocal8Bit("os"), os_json);
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
<UI version="4.0" >
|
|
||||||
<class>QtWidgetsClass</class>
|
|
||||||
<widget class="QWidget" name="QtWidgetsClass" >
|
|
||||||
<property name="objectName" >
|
|
||||||
<string notr="true">QtWidgetsClass</string>
|
|
||||||
</property>
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>400</width>
|
|
||||||
<height>300</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle" >
|
|
||||||
<string>QtWidgetsClass</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<layoutDefault spacing="6" margin="11" />
|
|
||||||
<pixmapfunction></pixmapfunction>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</UI>
|
|
|
@ -1,58 +0,0 @@
|
||||||
#include "settingsscreen.h"
|
|
||||||
#include "config.h"
|
|
||||||
#include <QCryptographicHash>
|
|
||||||
#include "netio.h"
|
|
||||||
SettingsScreen::SettingsScreen(QWidget *parent)
|
|
||||||
: QWidget(parent)
|
|
||||||
{
|
|
||||||
ui.setupUi(this);
|
|
||||||
autoStart = new SwitchButton(ADD_AUTOSTART,this);
|
|
||||||
addDesktopLink = new QPushButton(this);
|
|
||||||
addDesktopLink->setText(QString::fromLocal8Bit("创建桌面快捷方式"));
|
|
||||||
connect(addDesktopLink, &QPushButton::pressed, this, &SettingsScreen::createShortCut);
|
|
||||||
layout = new QHBoxLayout(this);
|
|
||||||
left = new QVBoxLayout(this);
|
|
||||||
addDesktopLink_label = new QLabel(QString::fromLocal8Bit("添加桌面快捷方式"),this);
|
|
||||||
autoStart_label = new QLabel(QString::fromLocal8Bit("开机启动"),this);
|
|
||||||
autoStart->setMaximumSize(100, 50);
|
|
||||||
autoStart->setMinimumSize(50, 25);
|
|
||||||
left->addWidget(autoStart_label);
|
|
||||||
left->addWidget(autoStart);
|
|
||||||
left->addWidget(addDesktopLink_label);
|
|
||||||
left->addWidget(addDesktopLink);
|
|
||||||
left->setAlignment(Qt::AlignCenter);
|
|
||||||
left->setMargin(0);
|
|
||||||
layout->addLayout(left);
|
|
||||||
information = new QLabel;
|
|
||||||
QString device_id = QCryptographicHash::hash(getMachineGUID().toUtf8(), QCryptographicHash::Md5).toHex();
|
|
||||||
QString inf_str = QString::fromLocal8Bit("硬件ID:\n");
|
|
||||||
inf_str += device_id;
|
|
||||||
inf_str+= QString::fromLocal8Bit("\n本软件采用了Qt,Qt是The Qt Company的产品,采用LGPL协议发布。\n");
|
|
||||||
inf_str += QString::fromLocal8Bit("本软件采用了MiniBlink,MiniBlink是珠海独角兽科技有限公司的产品,采用Apache 2.0协议发布。\n");
|
|
||||||
information->setText(inf_str);
|
|
||||||
layout->addWidget(information);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SettingsScreen::createShortCut() {
|
|
||||||
QString deskTopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
|
|
||||||
deskTopPath = deskTopPath + QString::fromLocal8Bit("/办公助手.lnk");
|
|
||||||
QString srcFile = QApplication::applicationFilePath();
|
|
||||||
QFile::link(srcFile, deskTopPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsScreen::~SettingsScreen()
|
|
||||||
{
|
|
||||||
left->removeWidget(autoStart);
|
|
||||||
left->removeWidget(addDesktopLink);
|
|
||||||
left->removeWidget(addDesktopLink_label);
|
|
||||||
left->removeWidget(autoStart_label);
|
|
||||||
delete autoStart;
|
|
||||||
delete addDesktopLink;
|
|
||||||
delete addDesktopLink_label;
|
|
||||||
delete autoStart_label;
|
|
||||||
layout->removeItem(left);
|
|
||||||
delete left;
|
|
||||||
layout->removeWidget(information);
|
|
||||||
delete information;
|
|
||||||
delete layout;
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QHBoxLayout>
|
|
||||||
#include <QVboxLayout>
|
|
||||||
#include <QPushButton>
|
|
||||||
#include <QLabel>
|
|
||||||
#include "ui_settingsscreen.h"
|
|
||||||
#include "switchbutton.h"
|
|
||||||
|
|
||||||
|
|
||||||
class SettingsScreen : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
SettingsScreen(QWidget *parent = Q_NULLPTR);
|
|
||||||
~SettingsScreen();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::SettingsScreen ui;
|
|
||||||
QLabel *autoStart_label;
|
|
||||||
QLabel *addDesktopLink_label;
|
|
||||||
QPushButton *addDesktopLink;
|
|
||||||
SwitchButton *autoStart;
|
|
||||||
QHBoxLayout *layout;
|
|
||||||
QVBoxLayout *left;
|
|
||||||
QLabel *information;
|
|
||||||
private slots:
|
|
||||||
void createShortCut();
|
|
||||||
};
|
|
|
@ -1,23 +0,0 @@
|
||||||
<UI version="4.0" >
|
|
||||||
<class>SettingsScreen</class>
|
|
||||||
<widget class="QWidget" name="SettingsScreen" >
|
|
||||||
<property name="objectName" >
|
|
||||||
<string notr="true">SettingsScreen</string>
|
|
||||||
</property>
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>400</width>
|
|
||||||
<height>300</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle" >
|
|
||||||
<string>SettingsScreen</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<layoutDefault spacing="6" margin="11" />
|
|
||||||
<pixmapfunction></pixmapfunction>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</UI>
|
|
|
@ -1,188 +0,0 @@
|
||||||
#include "switchbutton.h"
|
|
||||||
#include "config.h"
|
|
||||||
#include <Windows.h>
|
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QFile>
|
|
||||||
SwitchButton::SwitchButton(int action,QWidget *parent=nullptr)
|
|
||||||
: QWidget(parent)
|
|
||||||
{
|
|
||||||
ui.setupUi(this);
|
|
||||||
checked = false;
|
|
||||||
this->action = action;
|
|
||||||
//开、闭时背景颜色
|
|
||||||
bgColorOff = QColor(225, 225, 225);
|
|
||||||
bgColorOn = QColor(250, 250, 250);
|
|
||||||
|
|
||||||
//开、闭时滑块颜色
|
|
||||||
sliderColorOff = QColor(100, 100, 100);
|
|
||||||
sliderColorOn = QColor(100, 184, 255);
|
|
||||||
|
|
||||||
space = 2; //背景间隔
|
|
||||||
rectRadius = 5;
|
|
||||||
|
|
||||||
step = width() / 50; //步长
|
|
||||||
|
|
||||||
//起始、目标位置
|
|
||||||
startX = 0;
|
|
||||||
endX = 0;
|
|
||||||
|
|
||||||
timer = new QTimer(this);
|
|
||||||
timer->setInterval(10);
|
|
||||||
connect(timer, &QTimer::timeout, this, &SwitchButton::updateValue);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void SwitchButton::updateValue()
|
|
||||||
{
|
|
||||||
if (checked) {
|
|
||||||
if (startX < endX) {
|
|
||||||
startX = startX + step;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
startX = endX;
|
|
||||||
timer->stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (startX > endX) {
|
|
||||||
startX = startX - step;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
startX = endX;
|
|
||||||
timer->stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
void SwitchButton::mousePressEvent(QMouseEvent *event)
|
|
||||||
{
|
|
||||||
QWidget::mousePressEvent(event);
|
|
||||||
checked = !checked;
|
|
||||||
if (action == ADD_AUTOSTART) {
|
|
||||||
if (checked == true) {
|
|
||||||
HKEY hRoot = HKEY_CURRENT_USER;
|
|
||||||
wchar_t *szSubKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
|
|
||||||
HKEY hKey;
|
|
||||||
DWORD dwDisposition = REG_OPENED_EXISTING_KEY; // 如果不存在不创建
|
|
||||||
LONG lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL,
|
|
||||||
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
|
|
||||||
if (lRet != ERROR_SUCCESS) {
|
|
||||||
QMessageBox::critical(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("创建开机启动项失败"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
QString app = QApplication::applicationFilePath();
|
|
||||||
lRet = RegSetValueEx(hKey, L"SelfRun", 0, REG_SZ, (BYTE*)app.toStdWString().c_str(), app.length());
|
|
||||||
if (lRet == ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("创建开机启动项成功"));
|
|
||||||
}
|
|
||||||
RegCloseKey(hKey);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
HKEY hRoot = HKEY_CURRENT_USER;
|
|
||||||
wchar_t *szSubKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
|
|
||||||
HKEY hKey;
|
|
||||||
DWORD dwDisposition = REG_OPENED_EXISTING_KEY; // 如果不存在不创建
|
|
||||||
LONG lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL,
|
|
||||||
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
|
|
||||||
if (lRet != ERROR_SUCCESS) {
|
|
||||||
QMessageBox::critical(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("移除开机启动项失败"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
QString app = QApplication::applicationFilePath();
|
|
||||||
lRet = RegDeleteValue(hKey, L"SelfRun");
|
|
||||||
if (lRet == ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("移除开机启动项成功"));
|
|
||||||
}
|
|
||||||
RegCloseKey(hKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//每次移动的步长为宽度的 50分之一
|
|
||||||
step = width() / 50;
|
|
||||||
|
|
||||||
//状态切换改变后自动计算终点坐标
|
|
||||||
if (checked)
|
|
||||||
{
|
|
||||||
endX = width() - width() / 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
endX = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
timer->start();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SwitchButton::resizeEvent(QResizeEvent *event)
|
|
||||||
{
|
|
||||||
QWidget::resizeEvent(event);
|
|
||||||
//每次移动的步长为宽度的 50分之一
|
|
||||||
step = width() / 50;
|
|
||||||
|
|
||||||
//尺寸大小改变后自动设置起点坐标为终点
|
|
||||||
if (checked)
|
|
||||||
{
|
|
||||||
startX = width() - width() / 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
startX = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
void SwitchButton::paintEvent(QPaintEvent *event)
|
|
||||||
{
|
|
||||||
QWidget::paintEvent(event);
|
|
||||||
//绘制准备工作,启用反锯齿
|
|
||||||
|
|
||||||
QPainter painter(this);
|
|
||||||
painter.setRenderHint(QPainter::Antialiasing);
|
|
||||||
//绘制背景
|
|
||||||
drawBg(&painter);
|
|
||||||
//绘制滑块
|
|
||||||
drawSlider(&painter);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SwitchButton::drawBg(QPainter *painter)
|
|
||||||
{
|
|
||||||
painter->save();
|
|
||||||
|
|
||||||
painter->setPen(Qt::NoPen);
|
|
||||||
if (!checked)
|
|
||||||
{
|
|
||||||
painter->setBrush(bgColorOff);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
painter->setBrush(bgColorOn);
|
|
||||||
}
|
|
||||||
painter->drawRoundedRect(rect(), rectRadius, rectRadius);
|
|
||||||
|
|
||||||
painter->restore();
|
|
||||||
}
|
|
||||||
void SwitchButton::drawSlider(QPainter *painter)
|
|
||||||
{
|
|
||||||
painter->save();
|
|
||||||
|
|
||||||
painter->setPen(Qt::NoPen);
|
|
||||||
if (!checked) {
|
|
||||||
painter->setBrush(sliderColorOff);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
painter->setBrush(sliderColorOn);
|
|
||||||
}
|
|
||||||
int sliderWidth = width() / 2 - space * 2;
|
|
||||||
int sliderHeight = height() - space * 2;
|
|
||||||
QRect sliderRect(startX + space, space, sliderWidth, sliderHeight);
|
|
||||||
painter->drawRoundedRect(sliderRect, rectRadius, rectRadius);
|
|
||||||
|
|
||||||
painter->restore();
|
|
||||||
}
|
|
||||||
|
|
||||||
SwitchButton::~SwitchButton()
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QPainter>
|
|
||||||
#include <QTimer>
|
|
||||||
#include "ui_switchbutton.h"
|
|
||||||
|
|
||||||
class SwitchButton : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
SwitchButton(int action, QWidget * parent);
|
|
||||||
~SwitchButton();
|
|
||||||
|
|
||||||
private:
|
|
||||||
int action;
|
|
||||||
Ui::SwitchButton ui;
|
|
||||||
bool checked;
|
|
||||||
QColor bgColorOff;
|
|
||||||
QColor bgColorOn;
|
|
||||||
QColor sliderColorOff;
|
|
||||||
QColor sliderColorOn;
|
|
||||||
int space;
|
|
||||||
int rectRadius;
|
|
||||||
int step;
|
|
||||||
int startX;
|
|
||||||
int endX;
|
|
||||||
QTimer *timer;
|
|
||||||
|
|
||||||
void updateValue();
|
|
||||||
void drawBg(QPainter * painter);
|
|
||||||
void drawSlider(QPainter * painter);
|
|
||||||
protected:
|
|
||||||
void paintEvent(QPaintEvent *);
|
|
||||||
void resizeEvent(QResizeEvent *);
|
|
||||||
void mousePressEvent(QMouseEvent *);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
|
@ -1,23 +0,0 @@
|
||||||
<UI version="4.0" >
|
|
||||||
<class>SwitchButton</class>
|
|
||||||
<widget class="QWidget" name="SwitchButton" >
|
|
||||||
<property name="objectName" >
|
|
||||||
<string notr="true">SwitchButton</string>
|
|
||||||
</property>
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>400</width>
|
|
||||||
<height>300</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle" >
|
|
||||||
<string>SwitchButton</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<layoutDefault spacing="6" margin="11" />
|
|
||||||
<pixmapfunction></pixmapfunction>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</UI>
|
|
|
@ -71,12 +71,14 @@
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)$(Configuration)\app\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)$(Configuration)\app</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
|
|
@ -71,12 +71,14 @@
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)$(Configuration)\app\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<LinkIncremental>true</LinkIncremental>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)$(Configuration)\app</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
|
Loading…
Reference in New Issue