数据库驱动完成,预览窗口完成

This commit is contained in:
2025-03-25 23:34:11 +08:00
parent d86f80982d
commit 94fe294aff
14 changed files with 578 additions and 257 deletions

View File

@@ -13,10 +13,27 @@ FrmAlbum::~FrmAlbum()
delete ui;
}
void FrmAlbum::slot_updateImage()
{
QList<QUrl> urls = {
QUrl("https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/20250320201317.png"),
QUrl("https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/EDH386.jpeg"),
QUrl("https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/20250321103557.png"),
QUrl("https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/logo512.png")
};
foreach (const QUrl& u, urls) {
FrmImgShow* widget = new FrmImgShow(this);
widget->loadImage(u);
picWidgetList.push_front(widget);
}
}
void FrmAlbum::initForm()
{
layout = new QHBoxLayout(this);
panelWidget = new PanelWidget(this);
panelWidget->setSpace(5);
layout->addWidget(panelWidget);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
@@ -34,6 +51,7 @@ void FrmAlbum::initForm()
QUrl("https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/20250320201317.png"),
QUrl("https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/EDH386.jpeg"),
QUrl("https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/20250321103557.png"),
QUrl("https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/logo512.png")
};
foreach (const QUrl& u, urls) {
@@ -42,5 +60,6 @@ void FrmAlbum::initForm()
picWidgetList.push_front(widget);
}
panelWidget->setWidget(picWidgetList, 3);
panelWidget->setWidget(picWidgetList, 4);
panelWidget->setSpace(15);
}

View File

@@ -18,6 +18,9 @@ public:
explicit FrmAlbum(QWidget *parent = nullptr);
~FrmAlbum();
public slots:
void slot_updateImage();
private:
Ui::FrmAlbum *ui;
QList<QWidget*> picWidgetList;

View File

@@ -32,7 +32,18 @@ void FrmImgShow::loadImage(const QUrl &imageUrl)
void FrmImgShow::setImage(const QPixmap &pixmap)
{
qDebug() << "setImage";
labImg->setPixmap(pixmap.scaled(200, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation));
// 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)
@@ -46,38 +57,38 @@ QSize FrmImgShow::sizeHint()
return QSize(300, 300);
}
// bool FrmImgShow::eventFilter(QObject *watched, QEvent *event)
// {
// if (watched == btnCopy) {
// if (event->type() == QEvent::Enter) {
// btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_blue.png")));
// return true;
// }
// else if (event->type() == QEvent::Leave) {
// btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
// return true;
// }
// else {
// return false;
// }
// }
bool FrmImgShow::eventFilter(QObject *watched, QEvent *event)
{
if (watched == btnCopy) {
if (event->type() == QEvent::Enter) {
btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_blue.png")));
return true;
}
else if (event->type() == QEvent::Leave) {
btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
return true;
}
else {
return false;
}
}
// if (watched == btnDelete) {
// if (event->type() == QEvent::Enter) {
// btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_red.png")));
// return true;
// }
// else if (event->type() == QEvent::Leave) {
// btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
// return true;
// }
// else {
// return false;
// }
// }
if (watched == btnDelete) {
if (event->type() == QEvent::Enter) {
btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_red.png")));
return true;
}
else if (event->type() == QEvent::Leave) {
btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
return true;
}
else {
return false;
}
}
// return QWidget::eventFilter(watched, event);
// }
return QWidget::eventFilter(watched, event);
}
void FrmImgShow::onFinished(QNetworkReply *reply)
{
@@ -91,39 +102,58 @@ void FrmImgShow::onFinished(QNetworkReply *reply)
void FrmImgShow::initForm()
{
labImg = new QLabel(this);
// btnCopy = new QPushButton(this);
// btnCopy->setMaximumHeight(18);
// btnDelete = new QPushButton(this);
// btnDelete->setMaximumHeight(18);
// horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
// hLayout = new QHBoxLayout();
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->installEventFilter(this);
btnDelete = new QPushButton();
btnDelete->setMinimumSize(22, 22);
btnDelete->setFlat(true);
btnDelete->setIcon(QIcon(":/qrc/image/delete_white.png"));
btnDelete->installEventFilter(this);
horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
hLayout = new QHBoxLayout();
ckbSelect = new QCheckBox();
// ckbSelect->setMinimumSize(20, 20);
// ckbSelect->setStyleSheet("border:1px solid white;border-radius:5px");
ckbSelect->setStyleSheet("border-style:none;");
hLayout->addWidget(btnCopy);
hLayout->addWidget(btnDelete);
hLayout->setContentsMargins(0, 0, 0, 0);
hLayout->addSpacerItem(horizenSpacer);
hLayout->addWidget(ckbSelect);
hLayout->setSpacing(0);
// ckbSelect = new QCheckBox(this);
// ckbSelect->setMaximumHeight(18);
// hLayout->addWidget(btnCopy);
// hLayout->addWidget(btnDelete);
// hLayout->setContentsMargins(0, 0, 0, 0);
// hLayout->addSpacerItem(horizenSpacer);
// hLayout->addWidget(ckbSelect);
vLayout = new QVBoxLayout();
vLayout->addWidget(labImg);
// vLayout->addLayout(hLayout);
vLayout->addLayout(hLayout);
vLayout->setContentsMargins(0, 0, 0, 0);
// vLayout->addLayout(vLayout);
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;border: 1px solid white");
// setStyleSheet("background-color: #FF0000;border: 1px solid white");
setFixedSize(140, 160);
setFixedSize(134, 160);
this->labImg->setFixedSize(140, 140);
this->labImg->setMinimumSize(130, 130);
}
void FrmImgShow::initWidget()

View File

@@ -37,7 +37,7 @@ private:
QVBoxLayout* vLayout;
protected:
// virtual bool eventFilter(QObject* watched, QEvent* event);
virtual bool eventFilter(QObject* watched, QEvent* event);
private slots:
void onFinished(QNetworkReply *reply);

View File

@@ -49,6 +49,7 @@ void TCHttpService::apiLogin()
this->m_token = jsonObj["token"].toString();
qDebug() << this->m_token;
m_isOnline = true;
ImageManager::instance()->addDomainUser(m_domain, m_userName);
emit signal_loginSuc();
}

View File

@@ -19,19 +19,13 @@
#include <QHttpPart>
#include <QHttpMultiPart>
#include <QHash>
#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();

View File

@@ -1,217 +1,217 @@
#include "urldatabase.h"
#include "urldatabase.h".h"
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
ImageUrlDatabase::ImageUrlDatabase(QObject *parent) : QObject(parent)
ImageManager* ImageManager::m_instance = nullptr;
QMutex ImageManager::m_mutex;
ImageManager::ImageManager(QObject *parent) : QObject(parent)
{
}
ImageUrlDatabase::~ImageUrlDatabase()
ImageManager::~ImageManager()
{
if (m_db.isOpen()) {
m_db.close();
}
}
bool ImageUrlDatabase::openDatabase(const QString &path)
ImageManager* ImageManager::instance()
{
m_db = QSqlDatabase::addDatabase("QSQLITE");
m_db.setDatabaseName(path);
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;
}
// 创建表结构
QSqlQuery query;
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, "
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)")) {
"username TEXT NOT NULL UNIQUE)")) {
qWarning() << "Failed to create users table:" << query.lastError().text();
return false;
}
// 创建服务器表
if (!query.exec("CREATE TABLE IF NOT EXISTS servers ("
"server_id INTEGER PRIMARY KEY AUTOINCREMENT, "
"domain TEXT NOT NULL UNIQUE, "
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)")) {
qWarning() << "Failed to create servers table:" << query.lastError().text();
// 创建域名-用户关联表(确保唯一)
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, "
"user_id INTEGER NOT NULL, "
"server_id INTEGER NOT NULL, "
"domain_user_id INTEGER NOT NULL, "
"image_url TEXT NOT NULL, "
"last_accessed TIMESTAMP, "
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
"FOREIGN KEY (user_id) REFERENCES users(user_id), "
"FOREIGN KEY (server_id) REFERENCES servers(server_id), "
"UNIQUE(user_id, server_id, image_url))")) {
"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;
}
// 创建索引
query.exec("CREATE INDEX IF NOT EXISTS idx_image_user ON image_urls(user_id)");
query.exec("CREATE INDEX IF NOT EXISTS idx_image_server ON image_urls(server_id)");
return true;
}
int ImageUrlDatabase::addUser(const QString &username)
bool ImageManager::addDomain(const QString &domain)
{
QSqlQuery query;
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(username);
if (!query.exec()) {
qWarning() << "Failed to add user:" << query.lastError().text();
return -1;
}
// 获取用户ID
return getUserId(username);
query.addBindValue(user);
return query.exec();
}
int ImageUrlDatabase::getUserId(const QString &username)
int ImageManager::getDomainId(const QString &domain)
{
QSqlQuery query;
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(username);
if (!query.exec() || !query.next()) {
return -1;
query.addBindValue(user);
if (query.exec() && query.next()) {
return query.value(0).toInt();
}
return query.value(0).toInt();
return -1;
}
int ImageUrlDatabase::addServer(const QString &domain)
bool ImageManager::addDomainUser(const QString &domain, const QString &user)
{
QSqlQuery query;
query.prepare("INSERT OR IGNORE INTO servers (domain) VALUES (?)");
query.addBindValue(domain);
if (!query.exec()) {
qWarning() << "Failed to add server:" << query.lastError().text();
return -1;
}
// 获取服务器ID
return getServerId(domain);
}
int ImageUrlDatabase::getServerId(const QString &domain)
{
QSqlQuery query;
query.prepare("SELECT server_id FROM servers WHERE domain = ?");
query.addBindValue(domain);
if (!query.exec() || !query.next()) {
return -1;
}
return query.value(0).toInt();
}
bool ImageUrlDatabase::addImageUrl(const QString &username, const QString &domain, const QString &imageUrl)
{
int userId = addUser(username);
if (userId == -1) return false;
int serverId = addServer(domain);
if (serverId == -1) return false;
QSqlQuery query;
query.prepare("INSERT OR REPLACE INTO image_urls (user_id, server_id, image_url, last_accessed) "
"VALUES (?, ?, ?, datetime('now'))");
query.addBindValue(userId);
query.addBindValue(serverId);
query.addBindValue(imageUrl);
if (!query.exec()) {
qWarning() << "Failed to add image URL:" << query.lastError().text();
if (!addDomain(domain) || !addUser(user)) {
return false;
}
return true;
}
int domainId = getDomainId(domain);
int userId = getUserId(user);
QList<QString> ImageUrlDatabase::getUserImages(const QString &username)
{
QList<QString> result;
int userId = getUserId(username);
if (userId == -1) return result;
QSqlQuery query;
query.prepare("SELECT i.image_url FROM image_urls i "
"WHERE i.user_id = ? "
"ORDER BY i.last_accessed DESC");
query.addBindValue(userId);
if (!query.exec()) {
qWarning() << "Failed to get user images:" << query.lastError().text();
return result;
}
while (query.next()) {
result.append(query.value(0).toString());
}
return result;
}
QList<QString> ImageUrlDatabase::getServerImages(const QString &domain)
{
QList<QString> result;
int serverId = getServerId(domain);
if (serverId == -1) return result;
QSqlQuery query;
query.prepare("SELECT i.image_url FROM image_urls i "
"WHERE i.server_id = ? "
"ORDER BY i.last_accessed DESC");
query.addBindValue(serverId);
if (!query.exec()) {
qWarning() << "Failed to get server images:" << query.lastError().text();
return result;
}
while (query.next()) {
result.append(query.value(0).toString());
}
return result;
}
bool ImageUrlDatabase::updateLastAccessed(const QString &username, const QString &domain, const QString &imageUrl)
{
int userId = getUserId(username);
if (userId == -1) return false;
int serverId = getServerId(domain);
if (serverId == -1) return false;
QSqlQuery query;
query.prepare("UPDATE image_urls SET last_accessed = datetime('now') "
"WHERE user_id = ? AND server_id = ? AND image_url = ?");
query.addBindValue(userId);
query.addBindValue(serverId);
query.addBindValue(imageUrl);
if (!query.exec()) {
qWarning() << "Failed to update last accessed time:" << query.lastError().text();
if (domainId == -1 || userId == -1) {
return false;
}
return query.numRowsAffected() > 0;
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

@@ -6,34 +6,50 @@
#include <QSqlQuery>
#include <QSqlError>
#include <QDateTime>
#include <QString>
#include <QUrl>
#include <QHash>
#include <QMutex>
#include <QStandardPaths>
class ImageUrlDatabase : public QObject
class ImageManager : public QObject
{
Q_OBJECT
public:
explicit ImageUrlDatabase(QObject *parent = nullptr);
~ImageUrlDatabase();
bool openDatabase(const QString &path);
// 用户操作
int addUser(const QString &username);
// 服务器操作
int addServer(const QString &domain);
// 图片URL操作
bool addImageUrl(const QString &username, const QString &domain, const QString &imageUrl);
QList<QString> getUserImages(const QString &username);
QList<QString> getServerImages(const QString &domain);
bool updateLastAccessed(const QString &username, const QString &domain, const QString &imageUrl);
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;
// 内部辅助方法
int getUserId(const QString &username);
int getServerId(const QString &domain);
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,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 14.0.2, 2025-03-25T18:34:03. -->
<!-- Written by QtCreator 14.0.2, 2025-03-25T23:33:15. -->
<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>
@@ -179,8 +183,8 @@
</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>
<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>
@@ -245,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-Debug</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/Workspaces/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.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">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="qlonglong">1</value>
<value type="qlonglong">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 385 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,6 +1,7 @@
#include "widget.h"
#include "ui_widget.h"
#include "tchttpservice.h"
#include "urldatabase.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
@@ -11,6 +12,8 @@ Widget::Widget(QWidget *parent)
initWidget();
initSignalSlot();
initTrayApp();
QString stdPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
ImageManager::instance()->initialize(stdPath + "/picpanel.db");
// this->btnPageUpload->setChecked(true);
// this->btnPageUpload->setStyleSheet("{border: none;border-right: 4px solid #409EFF;color: #409EFF;}");
}
@@ -205,6 +208,7 @@ void Widget::initSignalSlot()
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()
@@ -370,6 +374,7 @@ void Widget::pageChangeSlot()
btnPageUpload->setIcon(iconUploadWhite);
btnPageSetting->setIcon(iconSettingWhite);
ui->stackedWidget->setCurrentWidget(frmalbum);
emit signal_updateImage();
}
else {
btn->setIcon(iconSettingBlue);

View File

@@ -91,5 +91,8 @@ private:
FileConfigDecode* fileConfig;
signals:
void signal_updateImage();
};
#endif // WIDGET_H

View File

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