增加了AI智能生图模块
This commit is contained in:
parent
aeaa45ac2c
commit
b19f1351ca
|
@ -1,10 +1,15 @@
|
||||||
QT += core gui svg KWindowSystem multimedia multimediawidgets concurrent
|
QT += core gui svg KWindowSystem multimedia multimediawidgets concurrent dbus printsupport
|
||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
CONFIG += c++11 link_pkgconfig
|
CONFIG += c++11 link_pkgconfig
|
||||||
|
|
||||||
PKGCONFIG += kysdk-qtwidgets kysdk-waylandhelper kysdk-sysinfo kysdk-datacollect gsettings-qt
|
KF5 += i18n doctools guiaddons widgetsaddons kio xmlgui textwidgets jobwidgets
|
||||||
|
|
||||||
|
PKGCONFIG += kysdk-qtwidgets kysdk-waylandhelper kysdk-sysinfo kysdk-datacollect gsettings-qt kylin-ai-base jsoncpp json-glib-1.0
|
||||||
|
|
||||||
|
INCLUDEPATH += /usr/include/KF5
|
||||||
|
INCLUDEPATH += /usr/include/KF5/KI18n
|
||||||
|
|
||||||
# The following define makes your compiler emit warnings if you use
|
# The following define makes your compiler emit warnings if you use
|
||||||
# any Qt feature that has been marked deprecated (the exact warnings
|
# any Qt feature that has been marked deprecated (the exact warnings
|
||||||
|
@ -50,7 +55,8 @@ SOURCES += \
|
||||||
src/module/plymouththemefeature.cpp \
|
src/module/plymouththemefeature.cpp \
|
||||||
src/module/plymouththemewidget.cpp \
|
src/module/plymouththemewidget.cpp \
|
||||||
src/module/savepathdialog.cpp \
|
src/module/savepathdialog.cpp \
|
||||||
src/titlebar.cpp
|
src/titlebar.cpp \
|
||||||
|
src/aithemebar.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
src/build/build.h \
|
src/build/build.h \
|
||||||
|
@ -84,7 +90,8 @@ HEADERS += \
|
||||||
src/module/plymouththemefeature.h \
|
src/module/plymouththemefeature.h \
|
||||||
src/module/plymouththemewidget.h \
|
src/module/plymouththemewidget.h \
|
||||||
src/module/savepathdialog.h \
|
src/module/savepathdialog.h \
|
||||||
src/titlebar.h
|
src/titlebar.h \
|
||||||
|
src/aithemebar.h
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
resource.qrc
|
resource.qrc
|
||||||
|
@ -103,4 +110,5 @@ appdesktop.files += kylin-theme-builder.desktop
|
||||||
appdesktop.path = /usr/share/applications/
|
appdesktop.path = /usr/share/applications/
|
||||||
|
|
||||||
INSTALLS +=target qm_files appdesktop
|
INSTALLS +=target qm_files appdesktop
|
||||||
LIBS += -lukui-log4qt
|
|
||||||
|
LIBS += -lukui-log4qt -L/usr/lib/x86_64-linux-gnu -lKF5I18n
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,253 @@
|
||||||
|
/*
|
||||||
|
Copyright (c) 2003-2007 Clarence Dang <dang@kde.org>
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef KP_AI_DRAWINGBAR_H
|
||||||
|
#define KP_AI_DRAWINGBAR_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QButtonGroup>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QCheckBox>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QPixmap>
|
||||||
|
#include <QStackedWidget>
|
||||||
|
#include <QScrollArea>
|
||||||
|
#include <QScrollBar>
|
||||||
|
#include <QPair>
|
||||||
|
#include <QList>
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QThread>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QJsonDocument>
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <QJsonArray>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QGSettings>
|
||||||
|
#include <ai-base/modelconfig.h>
|
||||||
|
#include <ai-base/vision.h>
|
||||||
|
#include <kylin-ai/config.h>
|
||||||
|
|
||||||
|
#define LOADING_IMAGE "/usr/share/kolourpaint/pics/loading.gif"
|
||||||
|
#define BG_IMAGE "/usr/share/kolourpaint/pics/bg@2x.png"
|
||||||
|
#define SLOGO_IMAGE "/usr/share/kolourpaint/pics/slogo-Drawing.svg"
|
||||||
|
#define DRAWING_IMAGE "/usr/share/kolourpaint/pics/AI-Drawing@2x.png"
|
||||||
|
#define KYLIN_AI_DBUS "com.kylin.aiassistant"
|
||||||
|
#define KYLIN_AI_PATH "/com/kylin/aiassistant"
|
||||||
|
#define AI_GSETTINGS "org.kylin.aiassistant.settings"
|
||||||
|
#define AI_KEY "isVisionSetup"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The AIModeDataThread class
|
||||||
|
* 线程类,用于跑AI的服务
|
||||||
|
*/
|
||||||
|
class AIModeDataThread : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
AIModeDataThread();
|
||||||
|
~AIModeDataThread();
|
||||||
|
|
||||||
|
bool setSessionStatus();
|
||||||
|
VisionSession getVisionSession(){
|
||||||
|
return session;
|
||||||
|
}
|
||||||
|
bool someFunctionInThread();
|
||||||
|
|
||||||
|
void setAIData (QString str, QSize size, int quantity, VisionImageStyle Style){
|
||||||
|
textBox = str;
|
||||||
|
AIImageSize = size;
|
||||||
|
quantityNum = quantity;
|
||||||
|
ImageStyle = Style;
|
||||||
|
}
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void finishedSignal(bool flag, QPixmap pixmap, int imageIndex, int imageSum, int errorCode);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void sendErrorSignal(int ret){
|
||||||
|
emit finishedSignal(false, QPixmap(), 0, 1, ret);
|
||||||
|
for(int i = 0; i < quantityNum; i++)
|
||||||
|
emit finishedSignal(true, QPixmap(), i, quantityNum, ret);
|
||||||
|
}
|
||||||
|
static void generateImageCallback(VisionImageData imageData, void* userData);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPixmap pixmap;
|
||||||
|
int quantityNum = 1; //数量按钮
|
||||||
|
QSize AIImageSize;
|
||||||
|
QString textBox;
|
||||||
|
VisionImageStyle ImageStyle;
|
||||||
|
bool m_sessionFlag = false;
|
||||||
|
VisionSession session;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The imageClickableLabel class
|
||||||
|
* QLabel点击事件类,用于对图片做处理传输
|
||||||
|
*/
|
||||||
|
class imageClickableLabel : public QLabel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void labelClicked(const QPixmap &pixmap);
|
||||||
|
|
||||||
|
public:
|
||||||
|
imageClickableLabel(const QPixmap &pixmap, QWidget *parent = nullptr) : QLabel(parent), pixmap(pixmap){}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void mousePressEvent(QMouseEvent *event) override
|
||||||
|
{
|
||||||
|
Q_UNUSED(event);
|
||||||
|
emit labelClicked(pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPixmap pixmap;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class aithemebar : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void imageClicked(const QPixmap &pixmap);
|
||||||
|
|
||||||
|
public:
|
||||||
|
aithemebar(QWidget *parent);
|
||||||
|
~aithemebar();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void initUI();
|
||||||
|
bool getConfigStatus();
|
||||||
|
void getconfigVersionData();
|
||||||
|
void loginConfigurationPage();
|
||||||
|
void setAiPixmap(QPixmap pixmap,int imageIndex, QGridLayout *pageLayout);
|
||||||
|
void updatePageLabel();
|
||||||
|
|
||||||
|
QSize getImageLabelSize();
|
||||||
|
|
||||||
|
bool eventFilter(QObject *watched, QEvent *event);
|
||||||
|
void handleLabelClicked(QObject *clickedObject);
|
||||||
|
|
||||||
|
QPixmap createPixmapWithText(const QString &text);
|
||||||
|
QPixmap AIGeneratesErrorHandling(int errorCode);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onConfigButtonClicked(); //配置按钮回调函数
|
||||||
|
void onConfigSettingsChange(const QString &key); //AI配置成功后回调
|
||||||
|
void onGenerateButtonClicked(); //生成按钮回调函数
|
||||||
|
void handleInputTextChanged(); //文字变化回调函数
|
||||||
|
|
||||||
|
void showPreviousPage(); //显示上一页
|
||||||
|
void showNextPage(); //显示下一页
|
||||||
|
void deleteCurrentPage();
|
||||||
|
void setEnabledDeleteButton();
|
||||||
|
void handleLabelClick(const QPixmap &pixmap);
|
||||||
|
|
||||||
|
void addPageAndStoreImages();
|
||||||
|
void onStyleMoreButtonClick();
|
||||||
|
|
||||||
|
void startThread() {
|
||||||
|
if (m_AiMode->setSessionStatus()){
|
||||||
|
m_AiMode->setAIData(textBox, AIImageSize, quantityNum, ImageStyle);
|
||||||
|
m_AiMode->someFunctionInThread();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void onThreadFinished(bool flag, QPixmap pixmap, int imageIndex, int imageSum, int errorCode);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void updateImageGrid();
|
||||||
|
void updateResultGrid();
|
||||||
|
void deleteImageGridWidget();
|
||||||
|
|
||||||
|
void addResolutionComboBox();
|
||||||
|
void addQuantityComboBox();
|
||||||
|
|
||||||
|
QJsonArray readResolutionsFromJson(QString key);
|
||||||
|
int readNumFromJson(QString key);
|
||||||
|
QWidget *addAllStyleLabel(QString iconPath, QString labelText, int line);
|
||||||
|
QWidget *addStyleLabel(QString iconPath, QString labelText, int line);
|
||||||
|
|
||||||
|
void addStyleWidget();
|
||||||
|
void addStyleGrid(QWidget *widget, int line);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int imageColumn = 2;//显示列表列数
|
||||||
|
int quantityNum = 1; //数量按钮
|
||||||
|
int show_quantityNum = 1; //数量按钮
|
||||||
|
int currentPageIndx = -1;//切换页第几页
|
||||||
|
|
||||||
|
bool styleFlag; //风格标志位,用于判断按下哪一个风格
|
||||||
|
bool deleteButtonFlag = true;
|
||||||
|
bool buildButtonFlag;
|
||||||
|
|
||||||
|
QGSettings *AiSettings; //监听配置信息
|
||||||
|
QSize AIImageSize; //图片大小
|
||||||
|
QSize showAIImageSize;
|
||||||
|
QMovie *movie = nullptr;//生成等待图标
|
||||||
|
QLabel *resultLabel; //生成结果 label
|
||||||
|
QLabel *pageLabel; //第几页面label
|
||||||
|
|
||||||
|
QLabel *selectedIconLabel;//风格图片选择Label
|
||||||
|
QLabel *selectedTextLabel;//风格文字选择Label
|
||||||
|
|
||||||
|
QWidget *configWidget; //立即配置页面
|
||||||
|
QWidget *widget_low_poly; //多边形风格
|
||||||
|
|
||||||
|
QString textBox; //图像描述文字
|
||||||
|
QString colorfulButtonStyle; //立即生成按钮渐变色
|
||||||
|
QString colorGrayButtonStyle;//立即生成按钮置灰
|
||||||
|
|
||||||
|
QBoxLayout *vbox; //页面布局
|
||||||
|
QHBoxLayout *resultGrid; //生成结果布局
|
||||||
|
QGridLayout *styleGrid; //风格布局
|
||||||
|
QPushButton *moreButton; //更多按钮
|
||||||
|
|
||||||
|
QScrollArea *scrollArea; //滚动窗口
|
||||||
|
QPushButton *buildButton; //立即生成按钮
|
||||||
|
QPushButton *deleteButton; //删除按钮
|
||||||
|
|
||||||
|
QComboBox *resolutionComboBox; //图像分辨率
|
||||||
|
QComboBox *quantityComboBox; //生成数量
|
||||||
|
|
||||||
|
QStackedWidget *stackedWidget; //生成结果的换页窗口
|
||||||
|
QVector<QVector<QPixmap>> imagesVector; //生成图像数据集成
|
||||||
|
|
||||||
|
VisionSession mSession = nullptr;
|
||||||
|
VisionImageStyle ImageStyle; //风格样式
|
||||||
|
AIModeDataThread *m_AiMode; //AI生成程序
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
|
@ -153,8 +153,8 @@ void MainWindow::initUI()
|
||||||
// this->setPalette(palette);
|
// this->setPalette(palette);
|
||||||
this->setBackgroundRole(QPalette::Base);
|
this->setBackgroundRole(QPalette::Base);
|
||||||
this->setAutoFillBackground(true);
|
this->setAutoFillBackground(true);
|
||||||
|
// this->setMinimumSize(1280, 720);
|
||||||
this->setMinimumSize(1280, 720);
|
this->setMinimumSize(1600, 900);
|
||||||
|
|
||||||
m_maininterface = new MainInterface();
|
m_maininterface = new MainInterface();
|
||||||
m_entrywidget = new QWidget();
|
m_entrywidget = new QWidget();
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#include "grubthemewidget.h"
|
#include "grubthemewidget.h"
|
||||||
#include "../fileProcess/filecheck.h"
|
#include "../fileProcess/filecheck.h"
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
#include "../aithemebar.h"
|
||||||
|
#include <QMainWindow>
|
||||||
|
|
||||||
bool GrubThemeWidget::g_themeChange;
|
bool GrubThemeWidget::g_themeChange;
|
||||||
/**
|
/**
|
||||||
|
@ -33,20 +35,34 @@ GrubThemeWidget::GrubThemeWidget(QWidget *parent) : QWidget(parent)
|
||||||
{
|
{
|
||||||
initPreviewWidget();
|
initPreviewWidget();
|
||||||
initRightWidget();
|
initRightWidget();
|
||||||
QHBoxLayout *grubthemelayout = new QHBoxLayout();
|
|
||||||
|
|
||||||
QPushButton *line = new QPushButton();
|
m_grubthemelayout = new QHBoxLayout();
|
||||||
line->setDisabled(true);
|
// grubthemelayout->setSizeConstraint(QLayout::SetMinimumSize);
|
||||||
line->setFixedWidth(1);
|
|
||||||
line->setFixedHeight(2000);
|
|
||||||
grubthemelayout->addWidget(m_previewwidget);
|
|
||||||
grubthemelayout->addWidget(line);
|
|
||||||
grubthemelayout->addWidget(m_rightwidget);
|
|
||||||
|
|
||||||
grubthemelayout->setContentsMargins(0,0,0,0);
|
QPushButton *line1 = new QPushButton();
|
||||||
grubthemelayout->setSpacing(0);
|
line1->setDisabled(true);
|
||||||
|
line1->setFixedWidth(1);
|
||||||
|
line1->setFixedHeight(2000);
|
||||||
|
|
||||||
this->setLayout(grubthemelayout);
|
QPushButton *line2 = new QPushButton();
|
||||||
|
line2->setDisabled(true);
|
||||||
|
line2->setFixedWidth(1);
|
||||||
|
line2->setFixedHeight(2000);
|
||||||
|
|
||||||
|
// 主布局添加控件
|
||||||
|
// m_grubthemelayout->addStretch(1);
|
||||||
|
m_grubthemelayout->addWidget(m_previewwidget);
|
||||||
|
m_grubthemelayout->addWidget(line1); // 分割线
|
||||||
|
m_grubthemelayout->addWidget(m_rightwidget);
|
||||||
|
m_grubthemelayout->addWidget(line2); // 分割线
|
||||||
|
initAithemeBar();
|
||||||
|
// m_grubthemelayout->addWidget(m_aithemebar);
|
||||||
|
// m_grubthemelayout->addStretch(1);
|
||||||
|
|
||||||
|
m_grubthemelayout->setContentsMargins(0,0,0,0);
|
||||||
|
m_grubthemelayout->setSpacing(0);
|
||||||
|
|
||||||
|
this->setLayout(m_grubthemelayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -73,6 +89,34 @@ void GrubThemeWidget::initPreviewWidget()
|
||||||
m_previewwidget->setLayout(m_previewlayout);
|
m_previewwidget->setLayout(m_previewlayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 初始化Ai生图小部件
|
||||||
|
* 创建一个新的 QWidget,设置固定高度,并添加到grub布局。
|
||||||
|
* 连接 label 的 clicked 信号,当点击按钮时,传递图片到预览窗口。
|
||||||
|
*/
|
||||||
|
void GrubThemeWidget::initAithemeBar()
|
||||||
|
{
|
||||||
|
// 创建 aithemebar 实例
|
||||||
|
m_aithemebar = new aithemebar(this);
|
||||||
|
m_aithemebar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
|
|
||||||
|
|
||||||
|
// 设置最小和最大宽度
|
||||||
|
m_aithemebar->setMinimumSize(250, 620);
|
||||||
|
m_aithemebar->setMaximumWidth(250);
|
||||||
|
m_aithemebar->setBackgroundRole(QPalette::Base);
|
||||||
|
m_aithemebar->setAutoFillBackground(true);
|
||||||
|
|
||||||
|
// 设置 aithemebar 的固定宽度
|
||||||
|
m_aithemebar->setFixedWidth(250);
|
||||||
|
|
||||||
|
// 在布局中为 aithemebar 分配足够的空间
|
||||||
|
QSpacerItem *spacer = new QSpacerItem(15, 0, QSizePolicy::Fixed, QSizePolicy::Minimum);
|
||||||
|
m_grubthemelayout->addItem(spacer);
|
||||||
|
m_grubthemelayout->addWidget(m_aithemebar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 初始化右侧小部件
|
* @brief 初始化右侧小部件
|
||||||
*
|
*
|
||||||
|
@ -134,7 +178,7 @@ void GrubThemeWidget::initEditWidget()
|
||||||
grubAddPicWidget *a = new grubAddPicWidget();
|
grubAddPicWidget *a = new grubAddPicWidget();
|
||||||
|
|
||||||
QHBoxLayout *importlayout = new QHBoxLayout();
|
QHBoxLayout *importlayout = new QHBoxLayout();
|
||||||
importlayout->addStretch(1);
|
importlayout->addStretch(1);
|
||||||
importlayout->addWidget(m_showBtn);
|
importlayout->addWidget(m_showBtn);
|
||||||
importlayout->addStretch(1);
|
importlayout->addStretch(1);
|
||||||
importlayout->addWidget(a);
|
importlayout->addWidget(a);
|
||||||
|
@ -229,6 +273,14 @@ void GrubThemeWidget::refresh()
|
||||||
m_showBtn->setIconSize(QSize(178,122));
|
m_showBtn->setIconSize(QSize(178,122));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GrubThemeWidget::updateAIImage()
|
||||||
|
{
|
||||||
|
m_preview->updateBackground(resourceGrubPath);
|
||||||
|
QPixmap pixmap(resourceGrubPath);
|
||||||
|
m_showBtn->setIcon(QIcon(pixmap));
|
||||||
|
m_showBtn->setIconSize(QSize(178,122));
|
||||||
|
}
|
||||||
|
|
||||||
void GrubThemeWidget::useMaximumScale()
|
void GrubThemeWidget::useMaximumScale()
|
||||||
{
|
{
|
||||||
m_preview->maxscale();
|
m_preview->maxscale();
|
||||||
|
@ -250,15 +302,5 @@ void GrubThemeWidget::setBuildBtnText(bool isglobal)
|
||||||
|
|
||||||
void GrubThemeWidget::addspaceritem()
|
void GrubThemeWidget::addspaceritem()
|
||||||
{
|
{
|
||||||
QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding);
|
|
||||||
QSpacerItem *spacer2 = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding);
|
|
||||||
spacer->changeSize(m_previewwidget->width(), 155, QSizePolicy::Maximum, QSizePolicy::Maximum);
|
|
||||||
spacer2->changeSize(m_previewwidget->width(), 159, QSizePolicy::Maximum, QSizePolicy::Maximum);
|
|
||||||
|
|
||||||
// m_previewlayout->addItem(spacer);
|
|
||||||
m_previewlayout->addWidget(m_preview);
|
m_previewlayout->addWidget(m_preview);
|
||||||
// m_previewlayout->addItem(spacer2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "grubthemefeature.h"
|
#include "grubthemefeature.h"
|
||||||
#include "historywidget.h"
|
#include "historywidget.h"
|
||||||
#include "basewidget.h"
|
#include "basewidget.h"
|
||||||
|
#include "../aithemebar.h"
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
@ -39,12 +40,14 @@ public:
|
||||||
explicit GrubThemeWidget(QWidget *parent = nullptr);
|
explicit GrubThemeWidget(QWidget *parent = nullptr);
|
||||||
void initPreviewWidget();
|
void initPreviewWidget();
|
||||||
void initRightWidget();
|
void initRightWidget();
|
||||||
|
void initAithemeBar();
|
||||||
void addspaceritem();
|
void addspaceritem();
|
||||||
void initEditWidget();
|
void initEditWidget();
|
||||||
void initBuildWidget();
|
void initBuildWidget();
|
||||||
static bool g_themeChange;
|
static bool g_themeChange;
|
||||||
void eidtInitWidget(const HistoryInfo &InfoData);
|
void eidtInitWidget(const HistoryInfo &InfoData);
|
||||||
void refresh();
|
void refresh();
|
||||||
|
void updateAIImage();
|
||||||
void useMaximumScale();
|
void useMaximumScale();
|
||||||
void useRestoreScale();
|
void useRestoreScale();
|
||||||
void setBuildBtnText(bool isglobal);
|
void setBuildBtnText(bool isglobal);
|
||||||
|
@ -56,8 +59,10 @@ private:
|
||||||
BasePreviewWidget *m_previewwidget;
|
BasePreviewWidget *m_previewwidget;
|
||||||
GrubImageWidget *m_preview;
|
GrubImageWidget *m_preview;
|
||||||
QWidget *m_rightwidget;
|
QWidget *m_rightwidget;
|
||||||
|
QHBoxLayout *m_grubthemelayout;
|
||||||
QWidget *m_grubwidget;
|
QWidget *m_grubwidget;
|
||||||
QWidget *m_buildwidget;
|
QWidget *m_buildwidget;
|
||||||
|
aithemebar *m_aithemebar;
|
||||||
QVBoxLayout *m_previewlayout;
|
QVBoxLayout *m_previewlayout;
|
||||||
GrubEditButton *m_showBtn;
|
GrubEditButton *m_showBtn;
|
||||||
QPushButton *m_buildButton;
|
QPushButton *m_buildButton;
|
||||||
|
|
Loading…
Reference in New Issue