自定义跟随主题控件优化
This commit is contained in:
parent
7b7ad2d13c
commit
e9e2af5afb
|
@ -30,25 +30,14 @@ const QPixmap ImageUtil::loadTheme(const QString &theme, const QString &defaultT
|
|||
{
|
||||
int origSize = size;
|
||||
const auto ratio = qApp->devicePixelRatio();
|
||||
if ( 2 == ratio) {
|
||||
size += origSize;
|
||||
} else if (3 == ratio) {
|
||||
size += origSize;
|
||||
}
|
||||
|
||||
QIcon icon = QIcon::fromTheme(theme);
|
||||
// 在主题中未找到,则使用默认路径的图标
|
||||
if (icon.isNull()) {
|
||||
QIcon iconDefault(defaultTheme);
|
||||
QPixmap pixmap = iconDefault.pixmap(iconDefault.actualSize(QSize(size, size)));
|
||||
size = origSize * ratio;
|
||||
|
||||
QIcon icon = QIcon::fromTheme(theme, QIcon(defaultTheme));
|
||||
QPixmap pixmap = icon.pixmap(icon.actualSize(QSize(size, size)));
|
||||
pixmap.setDevicePixelRatio(ratio);
|
||||
return drawSymbolicColoredPixmap(pixmap, color);
|
||||
}
|
||||
|
||||
return icon.pixmap(icon.actualSize(QSize(size, size)));
|
||||
}
|
||||
|
||||
const QPixmap ImageUtil::loadTheme(const QString &theme, const QString &defaultTheme, const QString& color, QSize size)
|
||||
{
|
||||
int origWidth = size.width();
|
||||
|
@ -57,28 +46,17 @@ const QPixmap ImageUtil::loadTheme(const QString &theme, const QString &defaultT
|
|||
size.setWidth(origWidth * ratio);
|
||||
size.setHeight(origHeight * ratio);
|
||||
|
||||
QIcon icon = QIcon::fromTheme(theme);
|
||||
// 在主题中未找到,则使用默认路径的图标
|
||||
if (icon.isNull()) {
|
||||
QIcon iconDefault(defaultTheme);
|
||||
QPixmap pixmap = iconDefault.pixmap(iconDefault.actualSize(size));
|
||||
|
||||
QIcon icon = QIcon::fromTheme(theme, QIcon(defaultTheme));
|
||||
QPixmap pixmap = icon.pixmap(icon.actualSize(size));
|
||||
pixmap.setDevicePixelRatio(ratio);
|
||||
return drawSymbolicColoredPixmap(pixmap, color);
|
||||
}
|
||||
|
||||
return icon.pixmap(icon.actualSize(size));
|
||||
}
|
||||
|
||||
const QPixmap ImageUtil::loadPixmap(QIcon &icon, const QString &color, int size)
|
||||
{
|
||||
int origSize = size;
|
||||
const auto ratio = qApp->devicePixelRatio();
|
||||
if ( 2 == ratio) {
|
||||
size += origSize;
|
||||
} else if (3 == ratio) {
|
||||
size += origSize;
|
||||
}
|
||||
size = origSize * ratio;
|
||||
|
||||
QPixmap pixmap = icon.pixmap(QSize(size, size));
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ MyIconButton::MyIconButton(QWidget *parent) :
|
|||
m_iconButton->setFixedSize(QSize(24, 24));
|
||||
m_iconButton->setFocusPolicy(Qt::NoFocus);
|
||||
m_iconButton->setFlat(true);
|
||||
// m_iconButton->setProperty("useIconHighlightEffect", 0x8);
|
||||
QString iconBtnQss = QString("QPushButton:checked{border: none;}"
|
||||
"QPushButton:!checked{border: none;}");
|
||||
m_iconButton->setStyleSheet(iconBtnQss);
|
||||
|
|
|
@ -15,6 +15,7 @@ PixmapLabel::PixmapLabel(QWidget *parent) :
|
|||
PixmapLabel::~PixmapLabel()
|
||||
{}
|
||||
|
||||
// 应用场景一:设置深浅主题分别展示的图片
|
||||
void PixmapLabel::setLightAndDarkPixmap(const QString &light, const QString &dark)
|
||||
{
|
||||
m_light = light;
|
||||
|
@ -37,7 +38,7 @@ void PixmapLabel::on_styleNameChanged(bool isDark)
|
|||
}
|
||||
}
|
||||
|
||||
// 设置跟随主题图标
|
||||
// 应用场景二:设置跟随主题风格图标,不随深浅背景色变化
|
||||
void PixmapLabel::setUkuiIconSchema(const QString &schema, QSize size)
|
||||
{
|
||||
m_iconTheme = schema;
|
||||
|
@ -49,16 +50,21 @@ void PixmapLabel::setUkuiIconSchema(const QString &schema, QSize size)
|
|||
connect(GlobelBackupInfo::inst().getGlobalSignals(), &GlobalSignals::themeIconChanged, this, &PixmapLabel::on_themeIconChanged);
|
||||
}
|
||||
|
||||
// 应用场景三:设置跟随主题风格图标(主题中也可能不存在该图标),随深浅色背景色变化
|
||||
void PixmapLabel::setUkuiIconSchema(const QString &schema, const QString &schemaDefault, QSize size)
|
||||
{
|
||||
m_iconTheme = schema;
|
||||
m_iconThemeDefault = schemaDefault;
|
||||
m_iconSize = size;
|
||||
// setProperty("useIconHighlightEffect", 0x8);
|
||||
|
||||
on_themeIconChanged();
|
||||
|
||||
disconnect(GlobelBackupInfo::inst().getGlobalSignals(), &GlobalSignals::themeIconChanged, this, &PixmapLabel::on_themeIconChanged);
|
||||
connect(GlobelBackupInfo::inst().getGlobalSignals(), &GlobalSignals::themeIconChanged, this, &PixmapLabel::on_themeIconChanged);
|
||||
|
||||
disconnect(GlobelBackupInfo::inst().getGlobalSignals(), &GlobalSignals::styleNameChanged, this, &PixmapLabel::on_themeIconChanged);
|
||||
connect(GlobelBackupInfo::inst().getGlobalSignals(), &GlobalSignals::styleNameChanged, this, &PixmapLabel::on_themeIconChanged);
|
||||
}
|
||||
|
||||
void PixmapLabel::on_themeIconChanged()
|
||||
|
|
|
@ -12,12 +12,12 @@ public:
|
|||
explicit PixmapLabel(QWidget *parent = nullptr);
|
||||
~PixmapLabel();
|
||||
|
||||
// 设置深浅主题分别展示的图片
|
||||
// 应用场景一:设置深浅主题分别展示的图片
|
||||
void setLightAndDarkPixmap(const QString &light, const QString &dark);
|
||||
|
||||
// 设置跟随主题图标
|
||||
// 应用场景二:设置跟随主题风格图标,不随深浅背景色变化
|
||||
void setUkuiIconSchema(const QString &schema, QSize size = QSize(24, 24));
|
||||
// 设置跟随主题图标
|
||||
// 应用场景三:设置跟随主题风格图标(主题中也可能不存在该图标),随深浅色背景色变化
|
||||
void setUkuiIconSchema(const QString &schema, const QString &schemaDefault, QSize size = QSize(16, 16));
|
||||
|
||||
private slots:
|
||||
|
|
Loading…
Reference in New Issue