1 Commits

Author SHA1 Message Date
c87e0ddda8 添加 'README.md' 2025-05-16 01:11:51 +08:00
52 changed files with 1502 additions and 1489 deletions

18
.vscode/launch.json vendored
View File

@@ -1,18 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug picpanel",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/picpanel",
"args": [],
"cwd": "${workspaceFolder}",
"environment": [],
"MIMode": "lldb"
}
]
}

1
README.md Normal file
View File

@@ -0,0 +1 @@
# PicPanel

View File

@@ -7,7 +7,6 @@ INCLUDEPATH += $$PWD/frmalbum
INCLUDEPATH += $$PWD/frmimgshow
INCLUDEPATH += $$PWD/switchbutton
INCLUDEPATH += $$PWD/serversetting
INCLUDEPATH += $$PWD/panelwidget
include($$PWD/frmupload/frmupload.pri)
include($$PWD/frmsetting/frmsetting.pri)
@@ -15,4 +14,3 @@ include($$PWD/frmalbum/frmalbum.pri)
include($$PWD/frmimgshow/frmimgshow.pri)
include($$PWD/switchbutton/switchbutton.pri)
include($$PWD/serversetting/serversetting.pri)
include($$PWD/panelwidget/panelwidget.pri)

View File

@@ -1,182 +1,14 @@
#include "frmalbum.h"
#include "ui_frmalbum.h"
#include <QUrl>
int FrmAlbum::m_copyType = 0;
FrmAlbum::FrmAlbum(QWidget *parent) : QWidget(parent)
FrmAlbum::FrmAlbum(QWidget *parent)
: QWidget(parent)
, ui(new Ui::FrmAlbum)
{
initForm();
ui->setupUi(this);
}
FrmAlbum::~FrmAlbum()
{
delete ui;
}
// QSet<QString> FrmAlbum::getUrlSet()
// {
// return m_selectedImageSet;
// }
int FrmAlbum::getCopyType()
{
return m_copyType;
}
void FrmAlbum::slot_updateImage()
{
qDebug() <<"slot_updateImage";
// QList<QUrl> urls = ImageManager::instance()->getImageUrls(FileConfigDecode::getInstance()->getAddress(),
// FileConfigDecode::getInstance()->getUserName());
// foreach (const QUrl& u, urls) {
// qDebug() << "image url:" <<u;
// FrmImgShow* widget = new FrmImgShow;
// connect(widget, &FrmImgShow::signal_imageSelected, [this](const QString& url){
// m_selectedImageSet.insert(url);
// });
// connect(widget, &FrmImgShow::signal_imageUnselected, [this](const QString& url){
// m_selectedImageSet.remove(url);
// });
// widget->loadImage(u);
// picWidgetList.push_front(widget);
// panelWidget->setWidget(picWidgetList, 3);
// }
}
void FrmAlbum::initForm()
{
layout = new QVBoxLayout();
setLayout(layout);
panelWidget = new PanelWidget();
panelWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
panelWidget->setStyleSheet("border:1px solid white;");
panelWidget->setSpace(5);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
panelWidget->setObjectName("widget");
panelWidget->setStyleSheet("background-color: rgb(63, 60, 55)");
// panelWidget->setStyleSheet("background-color: #FFFFFF");
panelWidget->setAutoHeight(false);
panelWidget->setAutoWidth(false);
panelWidget->setAutoHeight(false);
panelWidget->setAutoWidth(false);
btnCopy = new QPushButton;
btnCopy->setText("复制");
btnCopy->setCursor(Qt::PointingHandCursor);
btnCopy->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
btnCopy->setStyleSheet("height:25px;width:70px;background-color:#1B9EF3;color:white;border-style:none;border-radius:8px");
connect(btnCopy, &QPushButton::clicked, [this](){
qDebug() <<"btnCopy";
QString clipStr = "";
foreach (QString s, m_selectedImageSet) {
switch (cbbCopyType->currentIndex()) {
case 0:
{
QString curStr = QString("![](%1)").arg(s);
curStr += "\n";
clipStr += curStr;
break;
}
case 1:
{
QString curStr = QString("%1").arg(s);
curStr += "\n";
clipStr += curStr;
break;
}
case 2:
{
QString curStr = QString("<img src=\"%1\"/>").arg(s);
curStr += "\n";
clipStr += curStr;
break;
}
case 3:
{
QString curStr = QString("[IMG]%1[/IMG]").arg(s);
curStr += "\n";
clipStr += curStr;
break;
}
}
}
QClipboard* clipboard = QApplication::clipboard();
clipboard->setText(clipStr);
});
btnDelete = new QPushButton;
btnDelete->setText("删除");
btnDelete->setCursor(Qt::PointingHandCursor);
btnDelete->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
btnDelete->setStyleSheet("height:25px;width:70px;background-color:#F15140;color:white;border-style:none;border-radius:8px");
btnSelectAll = new QPushButton;
btnSelectAll->setText("全选");
btnSelectAll->setCursor(Qt::PointingHandCursor);
btnSelectAll->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
btnSelectAll->setStyleSheet("height:25px;width:70px;background-color:#44B363;color:white;border-style:none;border-radius:8px");
cbbCopyType = new QComboBox;
cbbCopyType->setCursor(Qt::PointingHandCursor);
cbbCopyType->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
cbbCopyType->setStyleSheet("height:25px;width:300;background-color:white;padding-left:16px;");
QList<QString> copyTypeList{"Markdown", "URL", "HTML", "UBB"};
cbbCopyType->addItems(copyTypeList);
connect(cbbCopyType, &QComboBox::currentIndexChanged, [this](int index){
m_copyType = index;
qDebug() << m_copyType;
});
spacerItem = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Fixed);
menuLayout = new QHBoxLayout();
menuLayout->setContentsMargins(0, 0, 0, 0);
menuLayout->setSpacing(8);
menuLayout->addWidget(cbbCopyType);
menuLayout->addWidget(btnCopy);
menuLayout->addWidget(btnDelete);
menuLayout->addWidget(btnSelectAll);
menuLayout->addSpacerItem(spacerItem);
layout->addLayout(menuLayout);
layout->addWidget(panelWidget);
layout->setSpacing(6);
// qDebug() << ui->widget;
connect(TCHttpService::getInstance(), &TCHttpService::signal_loginSuc, [this](){
qDebug() <<"login success";
QList<QUrl> urls = ImageManager::instance()->getImageUrls(FileConfigDecode::getInstance()->getAddress(),
FileConfigDecode::getInstance()->getUserName());
foreach (const QUrl& u, urls) {
qDebug() << "image url:" <<u;
FrmImgShow* widget = new FrmImgShow(panelWidget);
connect(widget, &FrmImgShow::signal_imageSelected, [this](const QString& url){
m_selectedImageSet.insert(url);
});
connect(widget, &FrmImgShow::signal_imageUnselected, [this](const QString& url){
m_selectedImageSet.remove(url);
});
widget->loadImage(u);
picWidgetList.push_front(widget);
panelWidget->setWidget(picWidgetList, 3);
}
});
panelWidget->setWidget(picWidgetList, 4);
panelWidget->setSpace(15);
}

View File

@@ -2,13 +2,6 @@
#define FRMALBUM_H
#include <QWidget>
#include <QPushButton>
#include <QComboBox>
#include <QSet>
#include "panelwidget.h"
#include "frmimgshow.h"
#include "fileconfigdecode.h"`
#include <QHBoxLayout>
namespace Ui {
class FrmAlbum;
@@ -22,29 +15,8 @@ public:
explicit FrmAlbum(QWidget *parent = nullptr);
~FrmAlbum();
// QSet<QString> getUrlSet();
static int getCopyType();
public slots:
void slot_updateImage();
private:
Ui::FrmAlbum *ui;
QList<QWidget*> picWidgetList;
PanelWidget* panelWidget;
QVBoxLayout* layout;
void initForm();
QPushButton* btnCopy;
QPushButton* btnDelete;
QPushButton* btnSelectAll;
QComboBox* cbbCopyType;
QHBoxLayout* menuLayout;
QSpacerItem* spacerItem;
QSet<QString> m_selectedImageSet;
static int m_copyType;
};
#endif // FRMALBUM_H

View File

@@ -6,30 +6,13 @@
<rect>
<x>0</x>
<y>0</y>
<width>632</width>
<height>414</height>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
<resources/>
<connections/>

View File

@@ -1,106 +1,12 @@
#include "frmimgshow.h"
#include "frmalbum.h"
FrmImgShow::FrmImgShow(QWidget *parent) : QWidget(parent)
FrmImgShow::FrmImgShow(QString& url, QWidget *parent) : QWidget(parent)
{
initForm();
initSignalSlot();
connect(TCHttpService::getInstance(), &TCHttpService::signal_imageDownloaded,
this, [this](const QString& requestId, const QPixmap& pixmap){
if (requestId == m_requestId) {
// setLoadingState(false);
qDebug() << "load success";
setImage(pixmap);
}
});
connect(TCHttpService::getInstance(), &TCHttpService::signal_downloadFailed,
this, [this](const QString& requestId, const QString& error){
if (requestId == m_requestId) {
qDebug() << "load failed";
}
});
}
void FrmImgShow::loadImage(const QUrl &imageUrl)
{
qDebug() << "loadImage";
m_currentUrl = imageUrl;
m_requestId = QUuid::createUuid().toString();
TCHttpService::getInstance()->downloadImage(m_requestId, imageUrl);
}
void FrmImgShow::setImage(const QPixmap &pixmap)
{
// int h = pixmap.height();
// int w = pixmap.width();
// int sh, sw;
// if (h >= w) {
// sh = 140;
// sw = w * h / 140;
// }
// else {
// sw = 140;
// sh = h * w /140;
// }
labImg->setPixmap(pixmap.scaled(this->labImg->width(), this->labImg->height()));
}
void FrmImgShow::setLoadingState(bool loading)
{
}
void FrmImgShow::initSignalSlot()
{
connect(btnCopy, &QPushButton::clicked, [this](){
switch(FrmAlbum::getCopyType()) {
case 0:
{
QClipboard* clipboard = QApplication::clipboard();
QString mdStr = QString("![](%1)").arg(m_currentUrl.toString());
clipboard->setText(mdStr);
break;
}
case 1:
{
QClipboard* clipboard = QApplication::clipboard();
QString urlStr = m_currentUrl.toString();
clipboard->setText(urlStr);
break;
}
case 2:
{
QClipboard* clipboard = QApplication::clipboard();
QString htmlStr = QString("<img src=\"%1\"/>").arg(m_currentUrl.toString());
clipboard->setText(htmlStr);
break;
}
case 3:
{
QClipboard* clipboard = QApplication::clipboard();
QString ubbStr = QString("[IMG]%1[/IMG]").arg(m_currentUrl.toString());
clipboard->setText(ubbStr);
break;
}
}
});
connect(ckbSelect, &QCheckBox::checkStateChanged, [this](Qt::CheckState state){
if (state == Qt::Unchecked) {
emit signal_imageUnselected(m_currentUrl.toString());
}
if (state == Qt::Checked) {
emit signal_imageSelected(m_currentUrl.toString());
}
});
}
QSize FrmImgShow::sizeHint()
{
return QSize(300, 300);
initForm();
initManager();
this->url = url;
manager->get(QNetworkRequest(QUrl(url)));
}
bool FrmImgShow::eventFilter(QObject *watched, QEvent *event)
@@ -148,63 +54,23 @@ void FrmImgShow::onFinished(QNetworkReply *reply)
void FrmImgShow::initForm()
{
this->setWindowFlag(Qt::FramelessWindowHint);
this->setWindowFlags(this->windowFlags() | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
setAttribute(Qt::WA_TranslucentBackground);
vLayout = new QVBoxLayout(this);
setLayout(vLayout);
labImg = new QLabel();
btnCopy = new QPushButton();
btnCopy->setMinimumSize(22, 22);
btnCopy->setFlat(true);
btnCopy->setIcon(QIcon(":/qrc/image/copy_white.png"));
btnCopy->setCursor(Qt::PointingHandCursor);
btnCopy->installEventFilter(this);
btnDelete = new QPushButton();
btnDelete->setMinimumSize(22, 22);
btnDelete->setFlat(true);
btnDelete->setIcon(QIcon(":/qrc/image/delete_white.png"));
btnDelete->installEventFilter(this);
btnDelete->setCursor(Qt::PointingHandCursor);
btnCopy = new QToolButton();
btnDelete = new QToolButton();
horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
hLayout = new QHBoxLayout();
ckbSelect = new QCheckBox();
ckbSelect->setText("");
ckbSelect->setMinimumSize(20, 20);
ckbSelect->setCursor(Qt::PointingHandCursor);
// ckbSelect->setStyleSheet("border:1px solid white;border-radius:5px");
// ckbSelect->setStyleSheet("border-style:none;background-color:green;spacing:0px;");
vLayout = new QVBoxLayout();
hLayout->addWidget(btnCopy);
hLayout->addWidget(btnDelete);
hLayout->setContentsMargins(0, 0, 0, 0);
hLayout->addSpacerItem(horizenSpacer);
hLayout->addWidget(ckbSelect);
hLayout->setSpacing(0);
vLayout->addWidget(labImg);
vLayout->addLayout(hLayout);
vLayout->setContentsMargins(0, 0, 0, 0);
this->setLayout(vLayout);
// btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
// btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
// btnCopy->setFixedSize(32, 32);
// btnCopy->setCursor(Qt::PointingHandCursor);
setStyleSheet("background-color: #FF0000");
setFixedSize(134, 160);
this->labImg->setMinimumSize(130, 130);
btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
btnCopy->setFixedSize(32, 32);
btnCopy->setCursor(Qt::PointingHandCursor);
}
void FrmImgShow::initWidget()
@@ -212,3 +78,15 @@ void FrmImgShow::initWidget()
btnCopy->installEventFilter(this);
btnDelete->installEventFilter(this);
}
void FrmImgShow::initManager()
{
manager = new QNetworkAccessManager();
QClipboard* clipboard = QGuiApplication::clipboard();
connect(manager, &QNetworkAccessManager::finished,
this, &FrmImgShow::onFinished);
connect(btnCopy, &QToolButton::clicked, [&](){
clipboard->setText(this->url);
});
}

View File

@@ -8,38 +8,30 @@
#include <QVBoxLayout>
#include <QToolButton>
#include <QSpacerItem>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QUrl>
#include <QCheckBox>
#include <QNetworkReply>
#include <QClipboard>
#include <QApplication>
#include <QGuiApplication>
#include "tchttpservice.h"
class FrmImgShow : public QWidget
{
Q_OBJECT
public:
explicit FrmImgShow(QWidget *parent = nullptr);
explicit FrmImgShow(QString& url, QWidget *parent = nullptr);
void loadImage(const QUrl& imageUrl);
void setImage(const QPixmap& pixmap);
void setLoadingState(bool loading);
void initSignalSlot();
virtual QSize sizeHint();
private:
QLabel* labImg;
// QLabel* labLoading;
// QMovie* movieLoading;
QPushButton* btnCopy;
QPushButton* btnDelete;
QToolButton* btnCopy;
QToolButton* btnDelete;
QSpacerItem* horizenSpacer;
QHBoxLayout* hLayout;
QCheckBox* ckbSelect;
QVBoxLayout* vLayout;
QNetworkAccessManager* manager;
QString url;
protected:
virtual bool eventFilter(QObject* watched, QEvent* event);
@@ -49,13 +41,10 @@ private slots:
private:
void initForm();
void initWidget();
QString m_requestId;
QUrl m_currentUrl;
void initManager();
signals:
void signal_imageSelected(QString);
void signal_imageUnselected(QString);
};
#endif // FRMIMGSHOW_H

View File

@@ -37,10 +37,6 @@ void FrmSetting::initForm()
ui->schEnableSsl->enableText(false);
ui->schEnableSsl->setAnimation(true);
ui->schAutoLogin->setBgColorOn(QColor("#409EFF"));
ui->schAutoLogin->enableText(false);
ui->schAutoLogin->setAnimation(true);
ui->btnServer->setCursor(Qt::PointingHandCursor);
ui->schRename->setCursor(Qt::PointingHandCursor);
@@ -85,36 +81,23 @@ void FrmSetting::initWidget()
ui->labTimeRenameClose->setStyleSheet(OPENQSS);
}
if (FileConfigDecode::getInstance()->getAutoCopy()) {
ui->labEnableSslOpen->setStyleSheet(OPENQSS);
ui->labEnableSslClose->setStyleSheet(CLOSEQSS);
ui->labEnableSsl->setStyleSheet(OPENQSS);
ui->labEnableSsl->setStyleSheet(CLOSEQSS);
}
else {
ui->labEnableSslOpen->setStyleSheet(CLOSEQSS);
ui->labEnableSslClose->setStyleSheet(OPENQSS);
}
if (FileConfigDecode::getInstance()->getAutoLogin()) {
ui->labAUtoLoginOpen->setStyleSheet(OPENQSS);
ui->labAUtoLoginOpen->setStyleSheet(CLOSEQSS);
TCHttpService::getInstance()->setConfiguration(FileConfigDecode::getInstance()->getUserName(),
FileConfigDecode::getInstance()->getPassword(),
FileConfigDecode::getInstance()->getAddress());
}
else {
ui->labAUtoLoginOpen->setStyleSheet(CLOSEQSS);
ui->labAUtoLoginOpen->setStyleSheet(OPENQSS);
ui->labEnableSsl->setStyleSheet(CLOSEQSS);
ui->labEnableSsl->setStyleSheet(OPENQSS);
}
ui->schRename->setChecked(FileConfigDecode::getInstance()->getRename());
ui->schAutoSetup->setChecked(FileConfigDecode::getInstance()->getAutoSetup());
ui->schTimeRename->setChecked(FileConfigDecode::getInstance()->getTimeRename());
ui->schEnableSsl->setChecked(FileConfigDecode::getInstance()->getAutoCopy());
ui->schAutoLogin->setChecked(FileConfigDecode::getInstance()->getAutoLogin());
connect(ui->schRename, &SwitchButton::checkedChanged, this, &FrmSetting::schRenameSlot);
connect(ui->schAutoSetup, &SwitchButton::checkedChanged, this, &FrmSetting::schAutoSetup);
connect(ui->schTimeRename, &SwitchButton::checkedChanged, this, &FrmSetting::schTimeRename);
connect(ui->schEnableSsl, &SwitchButton::checkedChanged, this, &FrmSetting::schEnableSsl);
connect(ui->schAutoLogin, &SwitchButton::checkedChanged, this, &FrmSetting::schAutoLogin);
connect(ui->btnServer, &QPushButton::clicked, serversetting, &ServerSetting::show);
}
@@ -153,13 +136,6 @@ void FrmSetting::schEnableSsl(bool checked)
}
void FrmSetting::schAutoLogin(bool checked)
{
FileConfigDecode::getInstance()->setAutoLogin(checked);
ui->labAUtoLoginOpen->setStyleSheet(checked?OPENQSS:CLOSEQSS);
ui->labAutoLoginClose->setStyleSheet(checked?CLOSEQSS:OPENQSS);
}
void FrmSetting::slot_updateServerConfig(QString address, QString username, QString password)
{
FileConfigDecode::getInstance()->setAddress(address);

View File

@@ -37,7 +37,6 @@ private slots:
void schAutoSetup(bool checked);
void schTimeRename(bool checked);
void schEnableSsl(bool checked);
void schAutoLogin(bool checked);
void slot_updateServerConfig(QString address, QString username, QString password);

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>731</width>
<height>464</height>
<height>439</height>
</rect>
</property>
<property name="windowTitle">
@@ -352,82 +352,6 @@
</item>
</layout>
</item>
<item>
<widget class="Line" name="line3_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="lanAUtoLogin">
<property name="styleSheet">
<string notr="true">color: rgb(255, 255, 255);</string>
</property>
<property name="text">
<string>自动连接</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<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="QLabel" name="labAutoLoginClose">
<property name="text">
<string>关</string>
</property>
</widget>
</item>
<item>
<widget class="SwitchButton" name="schAutoLogin" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>25</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labAUtoLoginOpen">
<property name="text">
<string>开</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>

View File

@@ -47,36 +47,25 @@ void FrmUpload::slot_uploadFileSec(QString url)
qDebug() << "slot_uploadFileSec:" << url;
QClipboard* clipboard = QApplication::clipboard();
QString domain = FileConfigDecode::getInstance()->getAddress();
QString userName = FileConfigDecode::getInstance()->getUserName();
ImageManager::instance()->addImageUrl(domain, userName, url);
if (copyType == COPY_TYPE_MARKDOWN) {
clipboard->setText(QString("![](%1)").arg(url));
emit signal_uploadSuccess(url);
}
if (copyType == COPY_TYPE_URL) {
clipboard->setText(url);
emit signal_uploadSuccess(url);
}
if (copyType == COPY_TYPE_UBB) {
// [IMG]https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/logo512.png[/IMG]
clipboard->setText(QString("[IMG]%1[/IMG]").arg(url));
emit signal_uploadSuccess(url);
}
if (copyType == COPY_TYPE_HTML) {
clipboard->setText(QString("<img src=\"%1\"/>").arg(url));
emit signal_uploadSuccess(url);
// QThread::sleep(50);
}
}
void FrmUpload::slot_progressUpdate(int v)
{
ui->progressBar->setValue(v);
}
bool FrmUpload::eventFilter(QObject *watched, QEvent *event)
{
static bool mousePressed = false;
@@ -166,8 +155,6 @@ void FrmUpload::initWidget()
this->setAcceptDrops(true);
setWindowFlags(Qt::FramelessWindowHint); // 移除系统边框
setAttribute(Qt::WA_TranslucentBackground); // 启用透明背景
connect(TCHttpService::getInstance(), &TCHttpService::signal_progressUpdate, this, &FrmUpload::slot_progressUpdate);
// ui->frmUpload->setAcceptDrops(true);
}
@@ -188,7 +175,6 @@ void FrmUpload::on_btnFastUpload_clicked()
{
// QString addDataPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
// QString cacheDirPath = addDataPath + "/cache/";
QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
if (!cacheDir.exists()) {
cacheDir.mkpath(".");
@@ -197,7 +183,6 @@ void FrmUpload::on_btnFastUpload_clicked()
const QMimeData* mimeData = clipboard->mimeData();
if (mimeData->hasImage()) {
ui->progressBar->setValue(0);
QImage image = clipboard->image();
if (!image.isNull()) {
RenameType renametype = FileConfigDecode::getInstance()->getRenameType();

View File

@@ -46,7 +46,6 @@ public:
public slots:
void slot_uploadFileSec(QString url);
void slot_progressUpdate(int v);
protected:
virtual bool eventFilter(QObject* watched, QEvent* event);
@@ -71,9 +70,6 @@ private:
// 0 md 1 url
CopyType copyType = COPY_TYPE_MARKDOWN;
signals:
void signal_uploadSuccess(QString url);
private:
Ui::FrmUpload *ui;
};

View File

@@ -162,45 +162,6 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QProgressBar" name="progressBar">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>10</height>
</size>
</property>
<property name="value">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>

View File

@@ -1,159 +0,0 @@
#pragma execution_character_set("utf-8")
#include "panelwidget.h"
#include "qscrollarea.h"
#include "qframe.h"
#include "qboxlayout.h"
#include "qdebug.h"
PanelWidget::PanelWidget(QWidget *parent) : QWidget(parent)
{
scrollArea = new QScrollArea(this);
scrollArea->setObjectName("scrollAreaMain");
scrollArea->setWidgetResizable(true);
scrollAreaWidgetContents = new QWidget();
scrollAreaWidgetContents->setGeometry(QRect(0, 0, 100, 100));
verticalLayout = new QVBoxLayout(scrollAreaWidgetContents);
verticalLayout->setSpacing(0);
verticalLayout->setContentsMargins(0, 0, 0, 0);
frame = new QFrame(scrollAreaWidgetContents);
frame->setObjectName("frameMain");
gridLayout = new QGridLayout(frame);
gridLayout->setSpacing(0);
gridLayout->setContentsMargins(0, 0, 0, 0);
verticalLayout->addWidget(frame);
scrollArea->setWidget(scrollAreaWidgetContents);
frame->setStyleSheet("QFrame#frameMain{border-width:0px;}");
margin = 0;
space = 0;
autoWidth = false;
autoHeight = false;
}
void PanelWidget::resizeEvent(QResizeEvent *)
{
scrollArea->resize(this->size());
}
QSize PanelWidget::sizeHint() const
{
return QSize(300, 200);
}
QSize PanelWidget::minimumSizeHint() const
{
return QSize(20, 20);
}
int PanelWidget::getMargin() const
{
return this->margin;
}
int PanelWidget::getSpace() const
{
return this->space;
}
bool PanelWidget::getAutoWidth() const
{
return this->autoWidth;
}
bool PanelWidget::getAutoHeight() const
{
return this->autoHeight;
}
QList<QWidget *> PanelWidget::getWidgets()
{
return this->widgets;
}
int PanelWidget::getColumnCount()
{
return this->columnCount;
}
void PanelWidget::setWidget(QList<QWidget *> widgets, int columnCount)
{
this->widgets = widgets;
this->columnCount = columnCount;
int row = 0;
int column = 0;
int index = 0;
//先把之前的所有移除并不可见
foreach (QWidget *widget, widgets) {
gridLayout->removeWidget(widget);
widget->setVisible(false);
delete widget;
}
//重新添加到布局中并可见
foreach (QWidget *widget, widgets) {
gridLayout->addWidget(widget, row, column);
widget->setVisible(true);
column++;
index++;
if (index % columnCount == 0) {
row++;
column = 0;
}
}
row++;
//设置右边弹簧
if (!autoWidth) {
QSpacerItem *hSpacer = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum);
gridLayout->addItem(hSpacer, 0, gridLayout->columnCount());
}
//设置底边弹簧
if (!autoHeight) {
QSpacerItem *vSpacer = new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding);
gridLayout->addItem(vSpacer, row, 0);
}
}
void PanelWidget::setMargin(int left, int top, int right, int bottom)
{
gridLayout->setContentsMargins(left, top, right, bottom);
}
void PanelWidget::setMargin(int margin)
{
if (this->margin != margin) {
setMargin(margin, margin, margin, margin);
}
}
void PanelWidget::setSpace(int space)
{
if (this->space != space) {
gridLayout->setSpacing(space);
}
}
void PanelWidget::setAutoWidth(bool autoWidth)
{
if (this->autoWidth != autoWidth) {
this->autoWidth = autoWidth;
}
}
void PanelWidget::setAutoHeight(bool autoHeight)
{
if (this->autoHeight != autoHeight) {
this->autoHeight = autoHeight;
}
}

View File

@@ -1,75 +0,0 @@
#ifndef PANELWIDGET_H
#define PANELWIDGET_H
#include <QWidget>
#include <QPainterPath>
class QScrollArea;
class QFrame;
class QVBoxLayout;
class QGridLayout;
#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
#include <QtDesigner/QDesignerExportWidget>
#else
#include <QtUiPlugin/QDesignerExportWidget>
#endif
class QDESIGNER_WIDGET_EXPORT PanelWidget : public QWidget
#else
class PanelWidget : public QWidget
#endif
{
Q_OBJECT
// Q_PROPERTY(int margin READ getMargin WRITE setMargin)
// Q_PROPERTY(int space READ getSpace WRITE setSpace)
// Q_PROPERTY(bool autoWidth READ getAutoWidth WRITE setAutoWidth)
// Q_PROPERTY(bool autoHeight READ getAutoHeight WRITE setAutoHeight)
public:
explicit PanelWidget(QWidget *parent = 0);
protected:
void resizeEvent(QResizeEvent *);
private:
QScrollArea *scrollArea; //滚动区域
QWidget *scrollAreaWidgetContents; //滚动区域载体
QFrame *frame; //放置设备的框架,自动变宽变高
QVBoxLayout *verticalLayout; //设备面板总布局
QGridLayout *gridLayout; //设备表格布局
int margin; //边距
int space; //设备之间的间隔
bool autoWidth; //宽度自动拉伸
bool autoHeight; //高度自动拉伸
QList<QWidget *> widgets; //设备面板对象集合
int columnCount; //面板列数
public:
QSize sizeHint() const;
QSize minimumSizeHint() const;
int getMargin() const;
int getSpace() const;
bool getAutoWidth() const;
bool getAutoHeight() const;
QList<QWidget *> getWidgets();
int getColumnCount();
public Q_SLOTS:
void setWidget(QList<QWidget *> widgets, int columnCount);
void setMargin(int left, int top, int right, int bottom);
void setMargin(int margin);
void setSpace(int space);
void setAutoWidth(bool autoWidth);
void setAutoHeight(bool autoHeight);
};
#endif // PANELWIDGET_H

View File

@@ -1,5 +0,0 @@
HEADERS += \
$$PWD/panelwidget.h
SOURCES += \
$$PWD/panelwidget.cpp

View File

@@ -4,6 +4,3 @@ include($$PWD/fileconfigdecode/fileconfigdecode.pri)
INCLUDEPATH += $$PWD/tchttpservice
include($$PWD/tchttpservice/tchttpservice.pri)
INCLUDEPATH += $$PWD/urldatabase
include($$PWD/urldatabase/urldatabase.pri)

View File

@@ -24,7 +24,8 @@ FileConfigDecode *FileConfigDecode::getInstance()
FileConfigDecode::~FileConfigDecode()
{
updateFile();
// updateFile();
// qDebug() << "write:" << autoSetup << rename << timeRename << autoCopy;
}
QString FileConfigDecode::getAddress()
@@ -72,27 +73,23 @@ RenameType FileConfigDecode::getRenameType()
return renameType;
}
bool FileConfigDecode::getAutoLogin()
{
return autoLogin;
}
void FileConfigDecode::setAddress(QString value)
{
this->address = value;
updateFile();
// updateFile();
}
void FileConfigDecode::setPort(quint16 value)
{
this->port = value;
updateFile();
// updateFile();
}
void FileConfigDecode::setAutoSetup(bool value)
{
this->autoSetup = value;
updateFile();
updateFile();
// updateFile();
}
void FileConfigDecode::setRename(bool value)
@@ -104,13 +101,13 @@ void FileConfigDecode::setRename(bool value)
else {
renameType = (renameType == RENAME_TYPE_TIME) ? RENAME_TYPE_TIME : RENAME_TYPE_NORMAL;
}
// qDebug() << renameType;
updateFile();
qDebug() << renameType;
updateFile();
// updateFile();
}
void FileConfigDecode::setTimeRename(bool value, int flag)
{
qDebug() << value;
this->timeRename = value;
if (value) {
renameType = RENAME_TYPE_TIME;
@@ -123,14 +120,16 @@ void FileConfigDecode::setTimeRename(bool value, int flag)
if (!value && flag == 0) {
renameType = RENAME_TYPE_NONE;
}
// qDebug() << renameType;
updateFile();
qDebug() << renameType;
updateFile();
// updateFile();
}
void FileConfigDecode::setAutoCopy(bool value)
{
this->autoCopy = value;
updateFile();
updateFile();
// updateFile();
}
void FileConfigDecode::setUserName(QString username)
@@ -145,14 +144,8 @@ void FileConfigDecode::setPassword(QString password)
updateFile();
}
void FileConfigDecode::setAutoLogin(bool value)
{
autoLogin = value;
updateFile();
}
void FileConfigDecode::fileWrite(QString path)
void FileConfigDecode::fileWrite(QString path, QString address, bool autosetup,
bool rename, bool timerename, bool autocopy, QString username, QString password)
{
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
QSettings* config = new QSettings(path, QSettings::IniFormat);
@@ -160,6 +153,7 @@ void FileConfigDecode::fileWrite(QString path)
QString section = QString("config");
config->beginGroup(section);
config->setValue("address", address);
config->setValue("port", port);
config->setValue("autosetup", autosetup);
config->setValue("rename", rename);
config->setValue("timerename", timerename);
@@ -172,13 +166,14 @@ void FileConfigDecode::fileWrite(QString path)
QString section = QString("config");
config->beginGroup(section);
config->setValue("address", address);
config->setValue("autosetup", autoSetup);
config->setValue("port", port);
config->setValue("autosetup", autosetup);
config->setValue("rename", rename);
config->setValue("timerename", timeRename);
config->setValue("autocopy", autoCopy);
config->setValue("username", userName);
config->setValue("timerename", timerename);
config->setValue("autocopy", autocopy);
config->setValue("username", username);
config->setValue("password", password);
config->setValue("autologin", autoLogin);
config->endGroup();
delete config;
#endif
}
@@ -201,14 +196,12 @@ void FileConfigDecode::initFile()
this->autoCopy = config->value(section + "autocopy").toBool();
this->userName = config->value(section+"username").toString();
this->password = config->value(section+"password").toString();
this->autoLogin = config->value(section+"autologin").toBool();
checkConfig();
this->firstCreate = false;
}
else {
qDebug() << "file not exists";
this->firstCreate = true;
this->address = "127.0.0.1:8080";
@@ -218,9 +211,8 @@ void FileConfigDecode::initFile()
this->autoCopy = false;
this->userName = "admin";
this->password = "admin";
this->autoLogin = false;
fileWrite(addFilePath);
fileWrite(addFilePath, address, autoSetup, rename, timeRename, autoCopy, userName, password);
}
}
@@ -243,7 +235,7 @@ void FileConfigDecode::updateFile()
QString addDataPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
QString addFilePath = addDataPath + "/config.ini";
// qDebug() << "write" << this->autoSetup << this->rename << this->timeRename << this->autoCopy;
fileWrite(addFilePath);
qDebug() << "write" << autoSetup << rename << timeRename << autoCopy;
fileWrite(addFilePath, address, autoSetup, rename, timeRename, autoCopy, userName, password);
}

View File

@@ -32,7 +32,6 @@ public:
QString getUserName();
QString getPassword();
RenameType getRenameType();
bool getAutoLogin();
void setAddress(QString value);
void setPort(quint16 value);
@@ -42,7 +41,6 @@ public:
void setAutoCopy(bool value);
void setUserName(QString username);
void setPassword(QString password);
void setAutoLogin(bool value);
void initFile();
void updateFile();
@@ -56,13 +54,12 @@ private:
bool autoCopy;
QString userName;
QString password;
bool autoLogin;
bool firstCreate;
RenameType renameType = RENAME_TYPE_NONE;
void fileWrite(QString path);
void fileWrite(QString path, QString address, bool autosetup, bool rename, bool timerename, bool autocopy, QString username, QString password);
static QScopedPointer<FileConfigDecode> m_instance;

View File

@@ -32,33 +32,128 @@ void TCHttpService::apiLogin()
QNetworkReply* reply = nullptr;
QNetworkRequest request(url);
QNetworkRequest request(url);
for (auto ite = headers.constBegin(); ite != headers.constEnd(); ite++){
request.setRawHeader(ite.key().toUtf8(), ite.value().toUtf8());
}
reply = m_manager.post(request, jsonData);
QObject::connect(reply, &QNetworkReply::finished, [this, reply]() {
emit requestFinished(reply, "login");
});
}
void TCHttpService::apiMyfileCount()
{
QString urlStr;
if (m_enableSsl)
urlStr = "https://" + m_domain + "/api/myfiles";
else
urlStr = "http://" + m_domain + "/api/myfiles";
QMap<QString, QString> headers;
headers.insert("Content-Type", "application/json");
QMap<QString, QString> params;
params.insert("cmd", "count");
QUrl url = encodeUrl(urlStr, params);
QJsonObject jsonObj;
jsonObj["token"] = m_token;
jsonObj["user"] = m_userName;
QJsonDocument jsonDoc(jsonObj);
QByteArray jsonData = jsonDoc.toJson();
QNetworkRequest request(url);
for (auto ite = headers.constBegin(); ite != headers.constEnd(); ite++){
request.setRawHeader(ite.key().toUtf8(), ite.value().toUtf8());
}
QNetworkReply* reply = nullptr;
reply = m_manager.post(request, jsonData);
QObject::connect(reply, &QNetworkReply::finished, [this, reply](){
emit requestFinished(reply, "myfilecount");
});
}
void TCHttpService::apiMyfileNormal(int start, int count)
{
QString urlStr;
if (m_enableSsl)
urlStr = "https://" + m_domain + "/api/myfiles";
else
urlStr = "http://" + m_domain + "/api/myfiles";
QMap<QString, QString> headers;
headers.insert("Content-Type", "application/json");
QMap<QString, QString> params;
params.insert("cmd", "normal");
QUrl url = encodeUrl(urlStr, params);
QNetworkRequest request(url);
for (auto ite = headers.constBegin(); ite != headers.constEnd(); ite++){
request.setRawHeader(ite.key().toUtf8(), ite.value().toUtf8());
}
QJsonObject jsonObj;
jsonObj["token"] = m_token;
jsonObj["user"] = m_userName;
jsonObj["count"] = count;
jsonObj["start"] = start;
QJsonDocument jsonDoc(jsonObj);
QByteArray jsonData = jsonDoc.toJson();
QNetworkReply* reply = nullptr;
reply = m_manager.post(request, jsonData);
connect(reply, &QNetworkReply::finished, [this, reply](){
emit requestFinished(reply, "myfilenormal");
});
}
void TCHttpService::apiMd5(const QString& filePath)
{
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly)) {
return;
}
QByteArray fileMd5;
QCryptographicHash hash(QCryptographicHash::Md5);
if (hash.addData(&file)) {
fileMd5 = hash.result().toHex();
}
else
return;
QString urlStr;
if (m_enableSsl)
urlStr = "https://" + m_domain + "/api/md5";
else
urlStr = "http://" + m_domain + "/api/md5";
QMap<QString, QString> headers;
headers.insert("Content-Type", "application/json");
QString md5Str = QString::fromUtf8(fileMd5);
QJsonObject jsonObj;
jsonObj["token"] = m_token;
jsonObj["md5"] = md5Str;
jsonObj["filename"] = QFileInfo(file).fileName();
jsonObj["user"] = m_userName;
file.close();
QJsonDocument jsonDoc(jsonObj);
QByteArray jsonData = jsonDoc.toJson();
QNetworkReply* reply = nullptr;
QNetworkRequest request(urlStr);
reply = m_manager.post(request, jsonData);
QObject::connect(reply, &QNetworkReply::finished, [this, reply]() {
QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
if (jsonDoc.isEmpty())
return;
QJsonObject jsonObj = jsonDoc.object();
int code = jsonObj["code"].toInt();
if (code == 0) {
this->m_token = jsonObj["token"].toString();
qDebug() << this->m_token;
m_isOnline = true;
ImageManager::instance()->addDomainUser(m_domain, m_userName);
QString stdPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
ImageManager::instance()->initialize(stdPath + "/picpanel.db");
emit signal_loginSuc();
}
QObject::connect(reply, &QNetworkReply::finished, [this, reply](){
emit requestFinished(reply, "md5");
});
}
void TCHttpService::apiUpload(const QString &filePath)
@@ -134,23 +229,17 @@ void TCHttpService::apiUpload(const QString &filePath)
connect(reply, &QNetworkReply::finished, this, [=]() {
if (reply->error() == QNetworkReply::NoError) {
qDebug() << "上传成功:";
QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
QJsonObject jsonObj = jsonDoc.object();
QString fileUrl = jsonObj["url"].toString();
ImageManager::instance()->addImageUrl(m_domain, m_userName, fileUrl);
emit signal_uploadFileSec(fileUrl);
apiMyfileCount();
} else {
qDebug() << "上传失败:" << reply->errorString();
}
reply->deleteLater();
multiPart->deleteLater();
});
connect(reply, &QNetworkReply::uploadProgress, this, [this](qint64 bytesSent, qint64 bytesTotal) {
connect(reply, &QNetworkReply::uploadProgress, this, [](qint64 bytesSent, qint64 bytesTotal) {
if (bytesTotal > 0) {
int progress = (bytesSent * 100) / bytesTotal;
emit signal_progressUpdate(progress);
qDebug() << "上传进度:" << progress << "%";
}
});
@@ -183,6 +272,112 @@ void TCHttpService::setConfiguration(QString userName, QString firstPwd, QString
this->m_domain = domain;
this->m_userName = userName;
this->m_firstPwd = firstPwd;
connect(this, &TCHttpService::requestFinished, [this](QNetworkReply* reply, QString api){
QByteArray rawData = reply->readAll();
if (api == "login") {
QJsonDocument jsonDoc = QJsonDocument::fromJson(rawData);
if (jsonDoc.isEmpty())
return;
QJsonObject jsonObj = jsonDoc.object();
int code = jsonObj["code"].toInt();
if (code == 0) {
this->m_token = jsonObj["token"].toString();
qDebug() << this->m_token;
apiMyfileCount();
}
}
if (api == "myfilecount") {
QJsonDocument jsonDoc = QJsonDocument::fromJson(rawData);
if (jsonDoc.isEmpty())
return;
QJsonObject jsonObj = jsonDoc.object();
int code = jsonObj["code"].toInt();
if (code == 0) {
int total = jsonObj["total"].toInt();
this->m_total = total;
int n = total / 10 + 1;
int pendingRequests = n;
for (int i = 0; i < n; i++) {
int count = (total - i * 10 >= 10) ? 10 : (total - i * 10);
apiMyfileNormal(i*10, count);
}
}
}
if (api == "myfilenormal") {
static int loginCnt = 0;
QJsonDocument jsonDoc = QJsonDocument::fromJson(rawData);
if (jsonDoc.isEmpty())
return;
QJsonObject jsonObj = jsonDoc.object();
int code = jsonObj["code"].toInt();
if (code != 0)
return;
QJsonArray jsonArray = jsonObj["files"].toArray();
for (const QJsonValue& value : jsonArray) {
QJsonObject jsonObj = value.toObject();
QString file_name = jsonObj["file_name"].toString();
int share_status = jsonObj["share_status"].toInt();
QString url = jsonObj["url"].toString();
qint64 size = jsonObj["size"].toInt();
QString md5 = jsonObj["md5"].toString();
QMap<QString, file_info_t>::iterator ite;
ite = m_fileMap.find(md5);
if (ite == m_fileMap.end()) {
qDebug() << file_name;
file_info_t info;
info.share_status = share_status;
info.size = size;
info.url = url;
info.file_name = file_name;
if (m_isOnline) {
qDebug() << "now upload";
emit signal_uploadFileSec(url);
}
m_fileMap.insert(md5, info);
// if (m_fileMap.size() == m_total && m_isOnline == false)
}
#if !DEBUG
// for(auto ite = m_fileMap.constBegin(); ite != m_fileMap.constEnd(); ite++) {
// qDebug() << "fileMap debug:" << ite.value().file_name;
// }
qDebug() << "fileMap size:" << m_fileMap.size();
#endif
}
if (!m_isOnline) {
loginCnt++;
qDebug() << "loginCnt:" << loginCnt;
if (loginCnt == m_total/10+1) {
m_isOnline = true;
qDebug() << "login success";
}
}
}
// if (api == "upload") {
// qDebug() <<"upload";
// QJsonDocument jsondoc = QJsonDocument::fromJson(rawData);
// QJsonObject jsonObj = jsondoc.object();
// int code = jsonObj["code"].toInt();
// if (code == 0)
// this->apiMyfileCount();
// }
reply->deleteLater();
});
apiLogin();
}
@@ -201,46 +396,6 @@ void TCHttpService::setUploadNum(int nb)
this->m_uploadNum = nb;
}
void TCHttpService::downloadImage(const QString &requestId, const QUrl &imageUrl)
{
#if 0
QPixmap cachedPixmap;
if (QPixmapCache::find(imageUrl.toString(), &cachedPixmap)) {
emit signal_imageDownloaded(requestId, cachedPixmap);
return;
}
if (getCachedImage(imageUrl, cachedPixmap)) {
QPixmapCache::insert(imageUrl.toString(), cachedPixmap);
emit signal_imageDownloaded(requestId, cachedPixmap);
return;
}
#endif
QNetworkRequest request(imageUrl);
QNetworkReply* reply = m_manager.get(request);
connect(reply, &QNetworkReply::finished, [this, reply](){
QString requestId = m_pendingRequests.take(reply);
if (reply->error() != QNetworkReply::NoError) {
emit signal_downloadFailed(requestId, reply->errorString());
}
else {
QPixmap pixmap;
if (pixmap.loadFromData(reply->readAll())) {
emit signal_imageDownloaded(requestId, pixmap);
}
else {
emit signal_downloadFailed(requestId, "Failed to load image data");
}
}
reply->deleteLater();
});
m_pendingRequests[reply] = requestId;
}
QUrl TCHttpService::encodeUrl(QString urlStr, QMap<QString, QString> params)
{
QUrlQuery query;
@@ -254,88 +409,20 @@ QUrl TCHttpService::encodeUrl(QString urlStr, QMap<QString, QString> params)
return url;
}
void TCHttpService::cleanOldCacheFiles()
void TCHttpService::updateFileMap(QJsonObject jsonObj)
{
QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
cacheDir.setNameFilters(QStringList() << "*.png" << "*.jpg" << "*.jpeg" << "*.svg");
cacheDir.setFilter(QDir::Files);
// QString fileMD5 = jsonObj["md5"].toString();
// QString fileUrl = jsonObj["http"].toString();
foreach (QString dirFile, cacheDir.entryList()) {
QFileInfo fileInfo(cacheDir.absoluteFilePath(dirFile));
if (fileInfo.lastModified().daysTo(QDateTime::currentDateTime()) > m_max_cache_days) {
cacheDir.remove(dirFile);
}
}
// QMap<QString, file_info_t>::iterator ite = m_fileMap.begin();
// if (ite != m_fileMap.end())
// return;
qint64 totalSize = 0;
QFileInfoList files = cacheDir.entryInfoList(QDir::Files, QDir::Time | QDir::Reversed);
foreach(QFileInfo file, files) {
totalSize += file.size();
}
if (totalSize > m_disk_cache_size_mb * 1024 * 1024) {
foreach (QFileInfo file, files) {
if (totalSize <= m_disk_cache_size_mb * 1024 * 1024 * 0.9)
break;
totalSize -= file.size();
QFile::remove(file.absoluteFilePath());
}
}
}
bool TCHttpService::getCachedImage(const QUrl &imageUrl, QPixmap &pixmap)
{
QString filePath = getCacheFilePath(imageUrl);
if (QFile::exists(filePath)) {
QFileInfo info(filePath);
if (info.lastModified().daysTo(QDateTime::currentDateTime()) > m_max_cache_days) {
QFile::remove(filePath);
return false;
}
if (pixmap.load(filePath)) {
return true;
}
}
return false;
}
QString TCHttpService::getCacheFilePath(const QUrl &imageUrl)
{
QCryptographicHash hash(QCryptographicHash::Md5);
hash.addData(imageUrl.toString().toUtf8());
QString fileName = hash.result().toHex() + ".png";
return QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/" + fileName;
// m_fileMap.insert(fileMD5, fileUrl);
}
TCHttpService::TCHttpService(QObject *parent) : QObject(parent)
{
}
void TCHttpService::slot_downloadFinished(QNetworkReply *reply)
{
QString requestId = m_pendingRequests.take(reply);
if (reply->error() != QNetworkReply::NoError) {
emit signal_downloadFailed(requestId, reply->errorString());
}
else {
QPixmap pixmap;
if (pixmap.loadFromData(reply->readAll())) {
emit signal_imageDownloaded(requestId, pixmap);
}
else {
emit signal_downloadFailed(requestId, "Failed to load image data");
}
}
reply->deleteLater();
}

View File

@@ -14,32 +14,29 @@
#include <QJsonArray>
#include <QFile>
#include <QFileInfo>
#include <QPixmap>
#include <QHttpMultiPart>
#include <QHttpPart>
#include <QHttpMultiPart>
#include <QHash>
#include <QPixmapCache>
#include <QDir>
#include "urldatabase.h"
class TCHttpService : public QObject
{
Q_OBJECT
private:
typedef struct {
QString file_name;
int share_status;
QString url;
qint64 size;
} file_info_t;
QMap<QString, file_info_t> m_fileMap;
public:
static TCHttpService* getInstance();
void apiLogin();
#if 0
void apiMyfileCount();
void apiMyfileNormal(int start, int count);
void apiMd5(const QString& filePath);
#endif
void apiUpload(const QString& filePath);
void apiSharePicShare(const QString& fileName, const QString& md5);
void setConfiguration(QString userName, QString firstPwd, QString domain);
@@ -47,25 +44,16 @@ public:
bool getOnlineState();
void setUploadNum(int nb);
void downloadImage(const QString& requestId, const QUrl& imageUrl);
private:
QUrl encodeUrl(QString url, QMap<QString, QString> params);
void cleanOldCacheFiles();
bool getCachedImage(const QUrl& imageUrl, QPixmap& pixmap);
QString getCacheFilePath(const QUrl& imageUrl);
void updateFileMap(QJsonObject jsonObj);
signals:
void signal_loginSuc();
void signal_uploadSuc();
void signal_shareSuc();
void signal_uploadFileSec(QString url);
void requestFinished(QNetworkReply* reply, QString api);
void signal_imageDownloaded(const QString& requestId, const QPixmap& pixmap);
void signal_downloadFailed(const QString& requestId, const QString& error);
void signal_progressUpdate(int);
private:
explicit TCHttpService(QObject *parent = nullptr);
@@ -77,11 +65,6 @@ private:
QString m_domain;
QString m_firstPwd;
QString m_userName;
int m_memory_cache_size_kb = 10240;
int m_disk_cache_size_mb = 100;
int m_max_cache_days = 30;
int m_total;
bool m_enableSsl = true;
@@ -89,10 +72,6 @@ private:
bool m_uploadNum = 0;
QHash<QNetworkReply*, QString> m_pendingRequests;
private slots:
void slot_downloadFinished(QNetworkReply* reply);
};
#endif // TCHTTPSERVICE_H

View File

@@ -1,217 +0,0 @@
#include "urldatabase.h".h"
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
ImageManager* ImageManager::m_instance = nullptr;
QMutex ImageManager::m_mutex;
ImageManager::ImageManager(QObject *parent) : QObject(parent)
{
}
ImageManager::~ImageManager()
{
if (m_db.isOpen()) {
m_db.close();
}
}
ImageManager* ImageManager::instance()
{
QMutexLocker locker(&m_mutex);
if (!m_instance) {
m_instance = new ImageManager();
}
return m_instance;
}
bool ImageManager::initialize(const QString &dbPath)
{
m_db = QSqlDatabase::addDatabase("QSQLITE", "image_manager_connection");
m_db.setDatabaseName(dbPath);
if (!m_db.open()) {
qWarning() << "Failed to open database:" << m_db.lastError().text();
return false;
}
return createTables();
}
bool ImageManager::createTables()
{
QSqlQuery query(m_db);
// 创建域名表
if (!query.exec("CREATE TABLE IF NOT EXISTS domains ("
"domain_id INTEGER PRIMARY KEY AUTOINCREMENT, "
"domain TEXT NOT NULL UNIQUE)")) {
qWarning() << "Failed to create domains table:" << query.lastError().text();
return false;
}
// 创建用户表
if (!query.exec("CREATE TABLE IF NOT EXISTS users ("
"user_id INTEGER PRIMARY KEY AUTOINCREMENT, "
"username TEXT NOT NULL UNIQUE)")) {
qWarning() << "Failed to create users table:" << query.lastError().text();
return false;
}
// 创建域名-用户关联表(确保唯一)
if (!query.exec("CREATE TABLE IF NOT EXISTS domain_users ("
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"domain_id INTEGER NOT NULL, "
"user_id INTEGER NOT NULL, "
"UNIQUE(domain_id, user_id), "
"FOREIGN KEY(domain_id) REFERENCES domains(domain_id), "
"FOREIGN KEY(user_id) REFERENCES users(user_id))")) {
qWarning() << "Failed to create domain_users table:" << query.lastError().text();
return false;
}
// 创建图片URL表
if (!query.exec("CREATE TABLE IF NOT EXISTS image_urls ("
"url_id INTEGER PRIMARY KEY AUTOINCREMENT, "
"domain_user_id INTEGER NOT NULL, "
"image_url TEXT NOT NULL, "
"upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
"FOREIGN KEY(domain_user_id) REFERENCES domain_users(id), "
"UNIQUE(domain_user_id, image_url))")) {
qWarning() << "Failed to create image_urls table:" << query.lastError().text();
return false;
}
return true;
}
bool ImageManager::addDomain(const QString &domain)
{
QSqlQuery query(m_db);
query.prepare("INSERT OR IGNORE INTO domains (domain) VALUES (?)");
query.addBindValue(domain);
return query.exec();
}
bool ImageManager::addUser(const QString &user)
{
QSqlQuery query(m_db);
query.prepare("INSERT OR IGNORE INTO users (username) VALUES (?)");
query.addBindValue(user);
return query.exec();
}
int ImageManager::getDomainId(const QString &domain)
{
QSqlQuery query(m_db);
query.prepare("SELECT domain_id FROM domains WHERE domain = ?");
query.addBindValue(domain);
if (query.exec() && query.next()) {
return query.value(0).toInt();
}
return -1;
}
int ImageManager::getUserId(const QString &user)
{
QSqlQuery query(m_db);
query.prepare("SELECT user_id FROM users WHERE username = ?");
query.addBindValue(user);
if (query.exec() && query.next()) {
return query.value(0).toInt();
}
return -1;
}
bool ImageManager::addDomainUser(const QString &domain, const QString &user)
{
if (!addDomain(domain) || !addUser(user)) {
return false;
}
int domainId = getDomainId(domain);
int userId = getUserId(user);
if (domainId == -1 || userId == -1) {
return false;
}
QSqlQuery query(m_db);
query.prepare("INSERT OR IGNORE INTO domain_users (domain_id, user_id) VALUES (?, ?)");
query.addBindValue(domainId);
query.addBindValue(userId);
return query.exec();
}
bool ImageManager::addImageUrl(const QString &domain, const QString &user, const QUrl &imageUrl)
{
int domainId = getDomainId(domain);
int userId = getUserId(user);
if (domainId == -1 || userId == -1) {
return false;
}
QSqlQuery query(m_db);
query.prepare("SELECT id FROM domain_users WHERE domain_id = ? AND user_id = ?");
query.addBindValue(domainId);
query.addBindValue(userId);
if (!query.exec() || !query.next()) {
return false;
}
int domainUserId = query.value(0).toInt();
query.prepare("INSERT OR IGNORE INTO image_urls (domain_user_id, image_url) VALUES (?, ?)");
query.addBindValue(domainUserId);
query.addBindValue(imageUrl.toString());
return query.exec();
}
QList<QUrl> ImageManager::getImageUrls(const QString &domain, const QString &user)
{
QList<QUrl> urls;
int domainId = getDomainId(domain);
int userId = getUserId(user);
if (domainId == -1 || userId == -1) {
return urls;
}
QSqlQuery query(m_db);
query.prepare("SELECT i.image_url FROM image_urls i "
"JOIN domain_users du ON i.domain_user_id = du.id "
"WHERE du.domain_id = ? AND du.user_id = ? "
"ORDER BY i.upload_time DESC");
query.addBindValue(domainId);
query.addBindValue(userId);
if (query.exec()) {
while (query.next()) {
urls.append(QUrl(query.value(0).toString()));
}
}
return urls;
}
bool ImageManager::containsDomainUser(const QString &domain, const QString &user)
{
int domainId = getDomainId(domain);
int userId = getUserId(user);
if (domainId == -1 || userId == -1) {
return false;
}
QSqlQuery query(m_db);
query.prepare("SELECT 1 FROM domain_users WHERE domain_id = ? AND user_id = ?");
query.addBindValue(domainId);
query.addBindValue(userId);
return query.exec() && query.next();
}

View File

@@ -1,55 +0,0 @@
#ifndef URLDATABASE_H
#define URLDATABASE_H
#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDateTime>
#include <QString>
#include <QUrl>
#include <QHash>
#include <QMutex>
#include <QStandardPaths>
class ImageManager : public QObject
{
Q_OBJECT
private:
explicit ImageManager(QObject *parent = nullptr);
~ImageManager();
public:
static ImageManager* instance();
// 初始化数据库连接
bool initialize(const QString &dbPath);
// 添加域名-用户对(不重复)
bool addDomainUser(const QString &domain, const QString &user);
// 上传成功后添加图片URL
bool addImageUrl(const QString &domain, const QString &user, const QUrl &imageUrl);
// 获取特定域名-用户的所有图片URL
QList<QUrl> getImageUrls(const QString &domain, const QString &user);
// 检查域名-用户对是否存在
bool containsDomainUser(const QString &domain, const QString &user);
private:
static ImageManager* m_instance;
static QMutex m_mutex;
QSqlDatabase m_db;
bool createTables();
bool addDomain(const QString &domain);
bool addUser(const QString &user);
int getDomainId(const QString &domain);
int getUserId(const QString &user);
};
#endif // URLDATABASE_H

View File

@@ -1,5 +0,0 @@
HEADERS += \
$$PWD/urldatabase.h
SOURCES += \
$$PWD/urldatabase.cpp

View File

@@ -13,6 +13,5 @@
<file>qrc/image/delete_red.png</file>
<file>qrc/image/delete_white.png</file>
<file>qrc/image/copy_blue.png</file>
<file>qrc/image/icon200.png</file>
</qresource>
</RCC>

BIN
libcrypto.a Normal file

Binary file not shown.

BIN
libcrypto.dll.a Normal file

Binary file not shown.

BIN
libssl.a Normal file

Binary file not shown.

BIN
libssl.dll.a Normal file

Binary file not shown.

View File

@@ -1,17 +1,15 @@
#include "widget.h"
#include <QApplication>
#include <windows.h>
#include <objbase.h>
#include <QFile>
#include <QStandardPaths>
#include "urldatabase.h"
int main(int argc, char *argv[])
{
// QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication a(argc, argv);
// QString strPath = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
// strPath += "/picpanel.db";
// ImageManager::instance()->initialize(strPath);
a.setFont(QFont("Microsoft YaHei UI"));
Widget w;
w.setWindowIcon(QIcon(QPixmap(":/qrc/image/icon.png")));

View File

@@ -1,4 +1,4 @@
QT += core gui network sql
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@@ -22,7 +22,7 @@ INCLUDEPATH += $$PWD
INCLUDEPATH += $$PWD/core_form
INCLUDEPATH += $$PWD/core_ui
INCLUDEPATH += $$PWD/core_support
include($$PWD/core_qui/core_qui.pri)
#include($$PWD/core_qui/core_qui.pri)
include($$PWD/core_form/core_form.pri)
include($$PWD/core_ui/core_ui.pri)
include($$PWD/core_support/core_support.pri)

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 14.0.2, 2025-03-26T18:36:00. -->
<!-- Written by QtCreator 14.0.2, 2025-03-25T02:39:05. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{631b5895-04c2-4f08-83d2-9e1277f189a1}</value>
<value type="QByteArray">{4f2ec396-c2e0-4f3d-a369-5968ecaf5cee}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -41,7 +41,7 @@
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
@@ -74,11 +74,15 @@
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">12</value>
<value type="int" key="ClangTools.ParallelJobs">16</value>
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
@@ -99,8 +103,8 @@
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Workspaces\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/Workspaces/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -138,8 +142,8 @@
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Workspaces\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/Workspaces/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -172,12 +176,54 @@
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Workspaces\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/Workspaces/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
@@ -203,20 +249,263 @@
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/picpanel/picpanel.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/picpanel/picpanel.pro</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Workspaces/picpanel/picpanel.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/Workspaces/picpanel/picpanel.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-release</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/Workspaces/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Workspaces/picpanel/picpanel.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/Workspaces/picpanel/picpanel.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
<value type="qlonglong">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>

319
picpanel.pro.user.4f2ec39 Normal file
View File

@@ -0,0 +1,319 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2025-03-24T00:02:57. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{4f2ec396-c2e0-4f3d-a369-5968ecaf5cee}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Workspaces/picpanel/picpanel.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/Workspaces/picpanel/picpanel.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

271
picpanel.pro.user.631b589 Normal file
View File

@@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 14.0.2, 2025-03-24T18:42:47. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{631b5895-04c2-4f08-83d2-9e1277f189a1}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<value type="bool" key="AutoTest.ApplyFilter">false</value>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">12</value>
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.7.3 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.7.3 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.673.win64_mingw_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="QList&lt;int&gt;" key="Analyzer.Valgrind.VisibleErrorKinds"></value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/picpanel/picpanel.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/picpanel/picpanel.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 15.0.0, 2025-03-26T01:05:22. -->
<!-- Written by QtCreator 15.0.0, 2025-03-24T02:01:39. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

270
picpanel/picpanel.pro.user Normal file
View File

@@ -0,0 +1,270 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 14.0.2, 2024-10-15T14:29:17. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{d9771540-486d-4f49-8184-6e87d1101478}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<value type="bool" key="AutoTest.ApplyFilter">false</value>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">8</value>
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 6.7.3 for macOS</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 6.7.3 for macOS</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.673.clang_64_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/lenn/Workspace/picpanel/picpanel/build/Qt_6_7_3_for_macOS-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/Users/lenn/Workspace/picpanel/picpanel/build/Qt_6_7_3_for_macOS-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/lenn/Workspace/picpanel/picpanel/build/Qt_6_7_3_for_macOS-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/Users/lenn/Workspace/picpanel/picpanel/build/Qt_6_7_3_for_macOS-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/lenn/Workspace/picpanel/picpanel/build/Qt_6_7_3_for_macOS-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/Users/lenn/Workspace/picpanel/picpanel/build/Qt_6_7_3_for_macOS-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/Users/lenn/Workspace/picpanel/picpanel/picpanel.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/Users/lenn/Workspace/picpanel/picpanel/picpanel.pro</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/Users/lenn/Workspace/picpanel/picpanel/build/Qt_6_7_3_for_macOS-Debug/picpanel.app/Contents/MacOS</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 735 B

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

BIN
qrc/image/info_blue_bak.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

BIN
qrc/image/info_grey_bak.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -284,66 +284,3 @@ QWidget#FrmUpload > QLabel#labTitle {
font-size: 30px;
}
QProgressBar {
border: 2px solid #3A3A3A;
border-radius: 5px;
background-color: #D3D3D3;
}
QProgressBar::chunk {
background-color: #1E90FF;
border-radius: 3px;
}
QCheckBox {
spacing: 0px;
padding: 0px;
margin: 0px;
}
QCheckBox::indicator {
width: 18px;
height: 18px;
}
QCheckBox::indicator:unchecked {
image: url(:/qrc/image/checkbox_unchecked.png)
}
QCheckBox::indicator:checked {
image: url(:/qrc/image/checkbox_checked.png)
}
QCheckBox::indicator:indeterminate {
image: url(:/qrc/image/checkbox_parcial.png)
}
QComboBox QAbstractItemView {
border-style: none;
border-radius: 10px;
outline: 0;
}
QComboBox QAbstractItemView::item {
padding: 0px;
margin: 0px;
border-style: none;
}
QComboBox QAbstractItemView::item:selected {
padding: 0px;
margin: 0px;
border-style: none;
color: black;
background-color: #F5F7FA;
}
QComboBox QAbstractItemView::item:hover {
padding: 0px;
margin: 0px;
background-color: #F5F7FA;
color: black;
border-style: none;
}

View File

@@ -1,8 +1,5 @@
<RCC>
<qresource prefix="/">
<file>qrc/qss/blacksoft.qss</file>
<file>qrc/image/checkbox_checked.png</file>
<file>qrc/image/checkbox_parcial.png</file>
<file>qrc/image/checkbox_unchecked.png</file>
</qresource>
</RCC>

View File

@@ -1,7 +1,6 @@
#include "widget.h"
#include "ui_widget.h"
#include "tchttpservice.h"
#include "urldatabase.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
@@ -11,10 +10,6 @@ Widget::Widget(QWidget *parent)
initWidgetForm();
initWidget();
initSignalSlot();
initTrayApp();
// QString stdPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
// qDebug() << stdPath;
// ImageManager::instance()->initialize(stdPath + "/picpanel.db");
// this->btnPageUpload->setChecked(true);
// this->btnPageUpload->setStyleSheet("{border: none;border-right: 4px solid #409EFF;color: #409EFF;}");
}
@@ -132,6 +127,15 @@ bool Widget::eventFilter(QObject *watched, QEvent *event)
void Widget::paintEvent(__attribute__((unused))QPaintEvent *event)
{
// QPainter painter(this);
// painter.setRenderHint(QPainter::Antialiasing);
// painter.setPen(Qt::NoPen);
// painter.setBrush(QColor("#3F3C37"));
// painter.drawRoundedRect(rect(), 15, 15);
// QWidget::paintEvent(event);
QStyleOption opt;
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
opt.init(this);
@@ -157,20 +161,12 @@ void Widget::initWidgetForm()
ui->btnMin->setFlat(true);
ui->btnClose->setFlat(true);
#if _WIN32
IconHelper::setIconFontIndex(2);
#elif __APPLE__
IconHelper::setIconFontIndex(1);
#endif
IconHelper::setIcon(ui->btnMin, QString("F068").toInt(nullptr, 16), 16);
IconHelper::setIcon(ui->btnClose, QString("F00D").toInt(nullptr, 16), 16);
QString version = QString("%1-%2.%3").arg("PicPanel").arg(VERSION_MAJ).arg(VERSION_MIN);
if (VERSION_BATE)
version += "-beta";
ui->labTitle->setText(version);
ui->labTitle->setText("PicPanel");
}
@@ -210,15 +206,12 @@ void Widget::initSignalSlot()
b->installEventFilter(this);
}
connect(TCHttpService::getInstance(), &TCHttpService::signal_loginSuc, this, &Widget::slot_loginSec);
connect(frmupload, &FrmUpload::signal_uploadSuccess, this, &Widget::slot_uploadSuccess);
connect(this, &Widget::signal_updateImage, frmalbum, &FrmAlbum::slot_updateImage);
}
void Widget::initLeftMenu()
{
frmupload = new FrmUpload(this);
frmalbum = new FrmAlbum(this);
frmupload = new FrmUpload;
frmalbum = new FrmAlbum;
frmsetting = new FrmSetting(this);
ui->frmTop->setPalette(QPalette(QColor(63, 60, 55)));
@@ -296,45 +289,7 @@ void Widget::initLeftMenu()
ui->frame->setLayout(frameLayout);
}
void Widget::initTrayApp()
{
trayIcon = new QSystemTrayIcon;
trayIcon->setIcon(QIcon(":/qrc/image/icon.png"));
trayIcon->setToolTip("PicPanel");
QMenu* trayMenu = new QMenu();
QAction* exitAction = new QAction("Exit");
connect(exitAction, &QAction::triggered, qApp, &QApplication::quit);
trayIcon->setContextMenu(trayMenu);
trayIcon->show();
}
void Widget::showNotification(QString title, QString content)
{
qDebug() << "showNotification";
trayIcon->showMessage(title, content, QIcon(":/qrc/image/icon200.png"));
// NOTIFYICONDATA nid = {0};
// nid.cbSize = sizeof(NOTIFYICONDATA);
// // nid.hWnd = (HWND)QGuiApplication::primaryScreen();
// nid.hWnd = reinterpret_cast<HWND>(this->winId());
// nid.uFlags = NIF_INFO | NIF_ICON | NIF_MESSAGE;
// QString iconPath = "./qrc/image/icon.png";
// HICON hIcon = (HICON)LoadImage(NULL, iconPath.toStdWString().c_str(), IMAGE_ICON,
// 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE);
// nid.hIcon = hIcon;
// std::wstring wtext = content.toStdWString();
// LPCWSTR lpText = wtext.c_str();
// wcscpy_s(nid.szTip, lpText);
// Shell_NotifyIcon(NIM_MODIFY, &nid);
// Shell_NotifyIcon(NIM_ADD, &nid);
// DestroyIcon(hIcon);
}
void Widget::on_btnClose_clicked()
{
@@ -378,7 +333,6 @@ void Widget::pageChangeSlot()
btnPageUpload->setIcon(iconUploadWhite);
btnPageSetting->setIcon(iconSettingWhite);
ui->stackedWidget->setCurrentWidget(frmalbum);
emit signal_updateImage();
}
else {
btn->setIcon(iconSettingBlue);
@@ -415,13 +369,3 @@ void Widget::actPrivateLicSlot()
"4.信息安全<br><br>"
"a)本软件不会收集您的个人信息、密钥信息等隐私信息,所收集的信息仅仅作为改善软件、优化体验、了解软件日活等用途。");
}
void Widget::slot_loginSec()
{
showNotification("登录成功", "登录成功");
}
void Widget::slot_uploadSuccess(QString url)
{
showNotification("上传成功", url);
}

View File

@@ -12,21 +12,12 @@
#include <QEvent>
#include <QPaintEvent>
#include <QMessageBox>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>
#include <QIcon>
#include "fileconfigdecode.h"
#include "frmalbum.h"
#include "frmsetting.h"
#include "frmupload.h"
#include "iconhelper.h"
#define VERSION_MAJ "2"
#define VERSION_MIN "0"
#define VERSION_BATE 1
class QPushButton;
QT_BEGIN_NAMESPACE
@@ -52,23 +43,17 @@ private slots:
void on_btnClose_clicked();
void on_btnMin_clicked();
private slots:
void pageChangeSlot();
void actAboutSlot();
void actRcodeSlot();
void actPrivateLicSlot();
void slot_loginSec();
public slots:
void slot_uploadSuccess(QString url);
private:
void initWidgetForm();
void initWidget();
void initSignalSlot();
void initLeftMenu();
void initTrayApp();
void showNotification(QString title, QString content);
private:
Ui::Widget *ui;
@@ -86,12 +71,7 @@ private:
QAction* actRcode;
QAction* actPrivateLic;
QSystemTrayIcon* trayIcon;
FileConfigDecode* fileConfig;
signals:
void signal_updateImage();
};
#endif // WIDGET_H

View File

@@ -150,9 +150,6 @@
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="frame">
<property name="sizePolicy">
@@ -169,7 +166,7 @@
</property>
<property name="maximumSize">
<size>
<width>180</width>
<width>200</width>
<height>16777215</height>
</size>
</property>