DtkGui
DTK Gui module
载入中...
搜索中...
未找到
Dtk::Gui::DGuiApplicationHelper类 参考

DGuiApplicationHelper 应用程序的 GUI ,如主题、调色板等. 更多...

类 Dtk::Gui::DGuiApplicationHelper 继承关系图:
Dtk::Gui::DGuiApplicationHelper 的协作图:

Public 类型

enum  ColorType { UnknownType , LightType , DarkType }
 
enum  SingleScope { UserScope , GroupScope , WorldScope }
 
enum  SizeMode { NormalMode , CompactMode }
 控件大小模式枚举包含 dtk支持的控件大小模式种类. 更多...
 
enum  Attribute {
  UseInactiveColorGroup = 1 << 0 , ColorCompositing = 1 << 1 , DontSaveApplicationTheme = 1 << 2 , ReadOnlyLimit = 1 << 22 ,
  IsDeepinPlatformTheme = ReadOnlyLimit << 0 , IsDXcbPlatform = ReadOnlyLimit << 1 , IsXWindowPlatform = ReadOnlyLimit << 2 , IsTableEnvironment = ReadOnlyLimit << 3 ,
  IsDeepinEnvironment = ReadOnlyLimit << 4 , IsSpecialEffectsEnvironment = ReadOnlyLimit << 5 , IsWaylandPlatform = ReadOnlyLimit << 6 , Q_DECL_ENUMERATOR_DEPRECATED_X =("Use DGuiApplicationHelper::IsWaylandPlatform instead") = IsWaylandPlatform ,
  HasAnimations = ReadOnlyLimit << 7
}
 

Public 槽

void setPaletteType (ColorType paletteType)
 设置程序所应用的调色板类型.
 
void handleHelpAction ()
 Open manual for this application.
 
static void openUrl (const QString &url)
 
DGuiApplicationHelper::SizeMode sizeMode () const
 当前应用的控件大小模式。
 
void setSizeMode (const DGuiApplicationHelper::SizeMode mode)
 设置应用控件大小模式,应用使用的为此模式,不再响应系统的控件大小模式。
 
void resetSizeMode ()
 重置设置应用控件大小模式,跟随系统的控件大小模式。
 
static bool isCompactMode ()
 当前控件大小模式是否为紧凑模式。
 

信号

void themeTypeChanged (ColorType themeType)
 
void paletteTypeChanged (ColorType paletteType)
 
void newProcessInstance (qint64 pid, const QStringList &arguments)
 通知新进程的信息。
 
void fontChanged (const QFont &font)
 
void applicationPaletteChanged ()
 通知调色板对象的改变。
 
void sizeModeChanged (DGuiApplicationHelper::SizeMode sizeMode)
 通知控件大小模式发生改变。
 

Public 成员函数

DPlatformThemesystemTheme () const
 DGuiApplicationHelper::systemTheme.
 
DPlatformThemeapplicationTheme () const
 DGuiApplicationHelper::applicationTheme.
 
DPalette applicationPalette () const
 
DPalette applicationPalette (ColorType paletteType) const
 返回应用程序调色板.
 
void setApplicationPalette (const DPalette &palette)
 DGuiApplicationHelper::setApplicationPalette.
 
const DFontManagerfontManager () const
 DGuiApplicationHelper::fontManager.
 
ColorType themeType () const
 返回程序的主题类型.
 
ColorType paletteType () const
 返回当前已设置的调色板类型.
 
bool hasUserManual () const
 Determine whether it's a user manual for this application.
 

静态 Public 成员函数

static DGuiApplicationHelperinstance ()
 DGuiApplicationHelper::instance返回 DGuiApplicationHelper 对象
 
static QColor adjustColor (const QColor &base, qint8 hueFloat, qint8 saturationFloat, qint8 lightnessFloat, qint8 redFloat, qint8 greenFloat, qint8 blueFloat, qint8 alphaFloat)
 调整颜色.
 
static QImage adjustColor (const QImage &base, qint8 hueFloat, qint8 saturationFloat, qint8 lightnessFloat, qint8 redFloat, qint8 greenFloat, qint8 blueFloat, qint8 alphaFloat)
 调整图片整体像素颜色.
 
static QColor blendColor (const QColor &substrate, const QColor &superstratum)
 将两种颜色混合,合成新的颜色.
 
static DPalette standardPalette (ColorType type)
 根据主题获取标准调色板.
 
static void generatePaletteColor (DPalette &base, QPalette::ColorRole role, ColorType type)
 获取调色板颜色.
 
static void generatePaletteColor (DPalette &base, DPalette::ColorType role, ColorType type)
 加工调色板的颜色. 这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.一般我们只会为调色板的 QPalette::Normal 组设置颜色值, 但是 控件中也需要使用其他组的颜色, 此函数使用一些固定规则为 base 填充 QPalette::Disabled 和 QPalette::Inactive 分组的颜色. 不同的颜色类型会使用不同的加工规则, 如果为 LightType 类型, 则将颜色的alpha通道调整为 0.6 后作为 QPalette::Disabled 类的颜色使用, 调整为 0.4 后 作为 QPalette::Inactive 类的颜色使用. 如果为 DarkType 类型, 则将颜色的alpha通道调整为 0.7 后作为 QPalette::Disabled 类的颜色使用, 调整为 0.6 后作为 QPalette::Inactive 类的颜色使用.
 
static void generatePalette (DPalette &base, ColorType type=UnknownType)
 加工调色板的颜色. 这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.同 generatePaletteColor, 将直接调用 generatePaletteColor 加工 所有类型的调色板颜色.
 
static DPalette fetchPalette (const DPlatformTheme *theme)
 获取调色板数据.
 
static bool isXWindowPlatform ()
 
static bool isTabletEnvironment ()
 用于判断当前桌面环境是否是平板电脑环境.
 
static bool isSpecialEffectsEnvironment ()
 isAnimationEnvironment 用于判断当前桌面环境是否是开启了动画等特效的环境
 
static void setAttribute (Attribute attribute, bool enable)
 
static bool testAttribute (Attribute attribute)
 
static ColorType toColorType (const QColor &color)
 获取颜色的明亮度,将其转换为主题类型的枚举值.
 
static ColorType toColorType (const QPalette &palette)
 将调色板 palette 转换为主题类型的枚举. 这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.使用 QPalette::background 获取颜色的明亮度,将其转换为主题类型的枚举值。 返回调色板的颜色类型
 
static bool setSingleInstance (const QString &key, SingleScope singleScope=UserScope)
 设置DGuiApplicationHelper实例.
 
static void setSingleInstanceInterval (int interval=3000)
 设置从QLocalServer获取消息的等待时间.
 
static QStringList userManualPaths (const QString &appName)
 获取帮助手册目录
 
static bool loadTranslator (const QString &fileName, const QList< QString > &translateDirs, const QList< QLocale > &localeFallback)
 
static bool loadTranslator (const QList< QLocale > &localeFallback=QList< QLocale >()<< QLocale::system())
 

Protected 成员函数

virtual void initialize ()
 

属性

ColorType themeType
 
ColorType paletteType
 
bool hasUserManual
 

友元

class _DGuiApplicationHelper
 

详细描述

DGuiApplicationHelper 应用程序的 GUI ,如主题、调色板等.

DGuiApplicationHelper类提供了一个gui应用程序的应用帮助类,可提供widget和declarative的 公共gui功能,例如调色板、字体、主题等功能。

\inmodule dtkgui

成员枚举类型说明

◆ Attribute

DGuiApplicationHelper::Attribute 定义了功能属性

枚举值
UseInactiveColorGroup 

如果开启,当窗口处于Inactive状态时就会使用QPalette::Inactive的颜色,否则窗口将没有任何颜色变化。

ColorCompositing 

是否采用半透明样式的调色板。

ReadOnlyLimit 

区分只读枚举。

IsDeepinPlatformTheme 

获取当前是否使用deepin的platformtheme插件,platformtheme插件可以为Qt程序提供特定的控件样式,默认使用chameleon主题。

IsDXcbPlatform 

获取当前使用的是不是dtk的xcb窗口插件,dxcb插件提供了窗口圆角和阴影功能。

IsXWindowPlatform 

获取当前是否运行在X11环境中。

IsTableEnvironment 

获取当前是否运行在deepin平板环境中,检测XDG_CURRENT_DESKTOP环境变量是不是tablet结尾。

IsDeepinEnvironment 

获取当前是否运行在deepin桌面环境中,检测XDG_CURRENT_DESKTOP环境变量是不是deepin。

◆ ColorType

DGuiApplicationHelper::ColorType 定义了主题类型.

枚举值
UnknownType 

未知主题(浅色主题或深色主题)

LightType 

浅色主题

DarkType 

深色主题

◆ SizeMode

控件大小模式枚举包含 dtk支持的控件大小模式种类.

含义
NormalMode 普通模式,为默认模式
CompactMode 紧凑模式

成员函数说明

◆ adjustColor() [1/2]

QColor Dtk::Gui::DGuiApplicationHelper::adjustColor ( const QColor &  base,
qint8  hueFloat,
qint8  saturationFloat,
qint8  lightnessFloat,
qint8  redFloat,
qint8  greenFloat,
qint8  blueFloat,
qint8  alphaFloat 
)
static

调整颜色.

注解
取值范围均为 -100 ~ 100 ,当三原色参数为-100时,颜色为黑色,参数为100时,颜色为白色. 以透明度( alphaFloat )为例,当参数为负数时基础色的 alphaFloat 值减少,现象偏向透明, 参数为正数alphaFloat 值增加,现象偏不透明
参数
base基础色
hueFloat色调
saturationFloat饱和度
lightnessFloat亮度
redFloat红色
greenFloat绿色
blueFloat蓝色
alphaFloatAlpha通道(透明度)
返回
经过调整的颜色

◆ adjustColor() [2/2]

QImage Dtk::Gui::DGuiApplicationHelper::adjustColor ( const QImage &  base,
qint8  hueFloat,
qint8  saturationFloat,
qint8  lightnessFloat,
qint8  redFloat,
qint8  greenFloat,
qint8  blueFloat,
qint8  alphaFloat 
)
static

调整图片整体像素颜色.

注解
取值范围均为 -100 ~ 100 ,当三原色参数为-100时,颜色为黑色,参数为100时,颜色为白色. 以透明度( alphaFloat )为例,当参数为负数时基础色的 alphaFloat 值减少,现象偏向透明, 参数为正数alphaFloat 值增加,现象偏不透明
参数
base基础色
hueFloat色调
saturationFloat饱和度
lightnessFloat亮度
redFloat红色
greenFloat绿色
blueFloat蓝色
alphaFloatAlpha通道(透明度)
返回
经过调整的图片

◆ applicationPalette()

DPalette Dtk::Gui::DGuiApplicationHelper::applicationPalette ( ColorType  paletteType) const

返回应用程序调色板.

如果使用 setApplicationPalette 设置过一个有效的调色板, 将直接返回保存的调色板. 否则 先计算调色板的ColorType, 再使用这个颜色类型通过 standardPalette 获取标准调色板. 计算 ColorType的数据来源按优先级从高到低排列有以下几种方式:

  1. 如果使用 setThemeType 设置过一个有效的颜色类型, 将直接使用 themeType 的值.
  2. 如果为QGuiApplication设置过调色板(表现为 QGuiApplication::testAttribute(Qt::AA_SetPalette) 为true), 则将使用 QGuiApplication::palette 通过 toColorType 获取颜色类型.
  3. 将根据 applicationTheme 的 DPlatformTheme::themeName 计算颜色类型. 如果ColorType来源自第2种方式, 则会直接使用 QGuiApplication::palette 覆盖标准调色板中的 QPalette 部分, 且程序不会再跟随系统的活动色自动更新调色板.
    警告
    不应该在DTK程序中使用QGuiApplication/QApplication::setPalette
    返回
    应用程序调色板

◆ applicationPaletteChanged

void DGuiApplicationHelper::applicationPaletteChanged ( )
signal

通知调色板对象的改变。

参见
windowPalette()

◆ applicationTheme()

DPlatformTheme * Dtk::Gui::DGuiApplicationHelper::applicationTheme ( ) const

DGuiApplicationHelper::applicationTheme.

同 systemTheme

返回
平台主题对象
参见
systemTheme
windowTheme

◆ blendColor()

QColor Dtk::Gui::DGuiApplicationHelper::blendColor ( const QColor &  substrate,
const QColor &  superstratum 
)
static

将两种颜色混合,合成新的颜色.

参数
substrate底层颜色
superstratum上层颜色
返回
混合颜色

◆ fetchPalette()

DPalette Dtk::Gui::DGuiApplicationHelper::fetchPalette ( const DPlatformTheme theme)
static

获取调色板数据.

首先根据 DPlatformTheme::themeName 获取主题的颜色类型, 如果名称以 "dark" 结尾则认为其颜色类型为 DarkType, 否则为 LightType. 如果主题名称为空, 将使用其父主题的名称( DPlatformTheme::fallbackProperty ). 根据颜色类型将使用 standardPalette 获取基础调色板数据, 在此基础上 从 DPlatformTheme::fetchPalette 获取最终的调色板.

参数
theme平台主题对象
返回
调色板数据

◆ fontManager()

const DFontManager * Dtk::Gui::DGuiApplicationHelper::fontManager ( ) const

DGuiApplicationHelper::fontManager.

程序中唯一的DFontManager对象, 会根据程序的fontChanged信号 更新 DFontManager::baseFontPixelSize

警告
请不要尝试更改它的 baseFontPixelSize 属性

◆ generatePalette()

void Dtk::Gui::DGuiApplicationHelper::generatePalette ( DPalette base,
ColorType  type = UnknownType 
)
static

加工调色板的颜色. 这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.同 generatePaletteColor, 将直接调用 generatePaletteColor 加工 所有类型的调色板颜色.

参数
base被加工的调色板
type加工时所使用的颜色类型, 如果值为 UnknownType 将使用 toColorType 获取颜色类型

◆ generatePaletteColor() [1/2]

void Dtk::Gui::DGuiApplicationHelper::generatePaletteColor ( DPalette base,
DPalette::ColorType  role,
DGuiApplicationHelper::ColorType  type 
)
static

加工调色板的颜色. 这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.一般我们只会为调色板的 QPalette::Normal 组设置颜色值, 但是 控件中也需要使用其他组的颜色, 此函数使用一些固定规则为 base 填充 QPalette::Disabled 和 QPalette::Inactive 分组的颜色. 不同的颜色类型会使用不同的加工规则, 如果为 LightType 类型, 则将颜色的alpha通道调整为 0.6 后作为 QPalette::Disabled 类的颜色使用, 调整为 0.4 后 作为 QPalette::Inactive 类的颜色使用. 如果为 DarkType 类型, 则将颜色的alpha通道调整为 0.7 后作为 QPalette::Disabled 类的颜色使用, 调整为 0.6 后作为 QPalette::Inactive 类的颜色使用.

参数
base被加工的调色板
role加工的项
type加工时所使用的颜色类型, 如果值为 UnknownType 将使用 toColorType 获取颜色类型

◆ generatePaletteColor() [2/2]

void Dtk::Gui::DGuiApplicationHelper::generatePaletteColor ( DPalette base,
QPalette::ColorRole  role,
DGuiApplicationHelper::ColorType  type 
)
static

获取调色板颜色.

参数
base调色板
role色码
type主题枚举值
参见
QPalette::ColorRole

◆ hasUserManual()

bool Dtk::Gui::DGuiApplicationHelper::hasUserManual ( ) const

Determine whether it's a user manual for this application.

返回

◆ instance()

DGuiApplicationHelper * Dtk::Gui::DGuiApplicationHelper::instance ( )
static

DGuiApplicationHelper::instance返回 DGuiApplicationHelper 对象

返回
DGuiApplicationHelper对象

◆ isSpecialEffectsEnvironment()

bool Dtk::Gui::DGuiApplicationHelper::isSpecialEffectsEnvironment ( )
static

isAnimationEnvironment 用于判断当前桌面环境是否是开启了动画等特效的环境

返回
true开启了 false没有开启

◆ isTabletEnvironment()

bool Dtk::Gui::DGuiApplicationHelper::isTabletEnvironment ( )
static

用于判断当前桌面环境是否是平板电脑环境.

返回
true 是平板电脑环境 false不是平板电脑环境

◆ newProcessInstance

void DGuiApplicationHelper::newProcessInstance ( qint64  pid,
const QStringList &  arguments 
)
signal

通知新进程的信息。

单例程序情况下,尝试启动新的程序实例将触发此信号,以便获取所传入的参数列表等信息,来进行进一步处理。

参数
pid进程 ID.
arguments启动进程时所传入的参数列表.

◆ paletteType()

DGuiApplicationHelper::ColorType Dtk::Gui::DGuiApplicationHelper::paletteType ( ) const

返回当前已设置的调色板类型.

如果未调用过 setPaletteType, 默认为 UnknownType.

返回
返回当前已设置的调色板类型.
警告
与 themetype 不同,此值与程序当前的 QPalette 没有关系。
参见
DGuiApplicationHelper::themeType

◆ setApplicationPalette()

void Dtk::Gui::DGuiApplicationHelper::setApplicationPalette ( const DPalette palette)

DGuiApplicationHelper::setApplicationPalette.

自定义应用程序调色板, 如果没有为 QGuiApplication 设置过 QPalette, 则 将触发 QGuiApplication::palette 的更新. 如果仅需要控制程序使用亮色还是暗色的 调色板, 请使用 setThemeType.

注解
主动设置调色板的操作会导致程序不再使用 DPlatformTheme 中调色板相关的数据, 也 包括窗口级别的 windowTheme 所对应的 DPlatformTheme, 届时设置 DPlatformTheme 的 themeName 和所有与 palette 相关的属性都不再生效.
警告
使用此方式设置的调色板将不会自动跟随活动色的变化
如果使用过QGuiApplication::setPalette, 此方式可能不会生效
参数
palette要设置的调色板

◆ setPaletteType

void Dtk::Gui::DGuiApplicationHelper::setPaletteType ( DGuiApplicationHelper::ColorType  paletteType)
slot

设置程序所应用的调色板类型.

将固定程序的调色板类型, 此行为可能导致 applicationPalette 变化, 前提是未使用 setApplicationPalette 固定过程序的调色板, 此方法不影响程序的调色板跟随 活动色改变, 可用于控制程序使用亮色还是暗色调色板.

注解
主动设置调色板颜色类型的操作会导致程序不再使用 DPlatformTheme 中调色板相关的数据, 也 包括窗口级别的 windowTheme 所对应的 DPlatformTheme, 届时设置 DPlatformTheme 的 themeName 和所有与 palette 相关的属性都不再生效.
参数
paletteType主题类型的枚举值

◆ setSingleInstance()

bool Dtk::Gui::DGuiApplicationHelper::setSingleInstance ( const QString &  key,
DGuiApplicationHelper::SingleScope  singleScope = UserScope 
)
static

设置DGuiApplicationHelper实例.

参数
key实例关键字
singleScope实例使用范围
返回
设置是否成功
注解
此处所用到DGuiApplicationHelperPrivate::waitTime默认值为3000ms,可通过
DGuiApplicationHelper::setSingleInstanceInterval设置

◆ setSingleInstanceInterval()

void Dtk::Gui::DGuiApplicationHelper::setSingleInstanceInterval ( int  interval = 3000)
static

设置从QLocalServer获取消息的等待时间.

用于在重新创建DGuiApplicationHelper单例时,检测DGuiApplicationHelper单例是否存在且有响应

参数
interval等待时间,如 interval 为 -1 则没有超时一直等待,默认和 QLocalSocket 一致 3000ms
注解
需要在 DGuiApplicationHelper::setSingleInstance 之前调用否则无效。

◆ setSizeMode

void DGuiApplicationHelper::setSizeMode ( const DGuiApplicationHelper::SizeMode  sizeMode)
slot

设置应用控件大小模式,应用使用的为此模式,不再响应系统的控件大小模式。

参数
sizeMode需要设置的控件大小模式.

◆ sizeMode

DGuiApplicationHelper::SizeMode DGuiApplicationHelper::sizeMode ( ) const
slot

当前应用的控件大小模式。

  • 若应用没有设置控件大小模式,则跟随系统的控件大小模式
  • 用户也可以设置环境变量 D_DTK_SIZEMODE 来影响应用的大小模式的支持,D_DTK_SIZEMODE=1为指定为普通模式, 当应用没有显示设置控件大小模式,则会采用普通模式。
  • 优先级为 DGuiApplicationHelper::setSizeMode > D_DTK_SIZEMODE > System's SizeMode

◆ standardPalette()

DPalette Dtk::Gui::DGuiApplicationHelper::standardPalette ( DGuiApplicationHelper::ColorType  type)
static

根据主题获取标准调色板.

参数
type主题枚举值
返回
调色板

◆ systemTheme()

DPlatformTheme * Dtk::Gui::DGuiApplicationHelper::systemTheme ( ) const

DGuiApplicationHelper::systemTheme.

返回系统级别的主题, 优先级低于 applicationTheme

返回
平台主题对象
参见
applicationTheme
windowTheme

◆ themeType()

DGuiApplicationHelper::ColorType Dtk::Gui::DGuiApplicationHelper::themeType ( ) const

返回程序的主题类型.

当themeType为UnknownType时, 将自动根据 GuiApplication::palette的QPalette::background颜色计算主题 类型, 否则与 paletteType 的值一致. 程序中应当使用此值作为 暗色/亮色主题类型的判断.

返回
主题的颜色类型.
参见
toColorType

◆ toColorType() [1/2]

DGuiApplicationHelper::ColorType Dtk::Gui::DGuiApplicationHelper::toColorType ( const QColor &  color)
static

获取颜色的明亮度,将其转换为主题类型的枚举值.

转换的策略为:先将颜色转换为rgb格式,再根据 Y = 0.299R + 0.587G + 0.114B 的公式 计算出颜色的亮度,亮度大于 191 时认为其为浅色,否则认为其为深色。

参数
color需要转换为主题的类型的颜色
返回
颜色类型的枚举值

◆ toColorType() [2/2]

DGuiApplicationHelper::ColorType Dtk::Gui::DGuiApplicationHelper::toColorType ( const QPalette &  palette)
static

将调色板 palette 转换为主题类型的枚举. 这是为便于使用而提供的一个重载成员函数.与上面的函数相比,它接受不同类型的参数.使用 QPalette::background 获取颜色的明亮度,将其转换为主题类型的枚举值。 返回调色板的颜色类型

参数
palette调色板
返回
颜色类型的枚举值

◆ userManualPaths()

static QStringList DGuiApplicationHelper::userManualPaths ( const QString &  appName)
static

获取帮助手册目录

获取帮助手册已存在目录

返回
帮助手册目录
参数
appName目标应用名称 @detail 目录深度具体到appName层级,例:一个典型的目录路径为:/usr/share/deepin-manual/manual-assets/application/appName

该类的文档由以下文件生成: