DtkWidget
DTK Widget module
载入中...
搜索中...
未找到
Dtk::Widget::DApplication类 参考

DApplication 是 DTK 中用于替换 QCoreApplication 相关功能实现的类. 更多...

类 Dtk::Widget::DApplication 继承关系图:

Public 类型

enum  SingleScope { UserScope , SystemScope }
 

信号

void newInstanceStarted ()
 该信号会在程序的一个新实例启动的时候被触发.
 
void iconThemeChanged ()
 该信号在系统图标主题发生改变的时候被触发.
 
void screenDevicePixelRatioChanged (QScreen *screen)
 该信号在对应屏幕 screen 的缩放比可能发现变化时触发.
 

Public 成员函数

 DApplication (int &argc, char **argv)
 constructs an instance of DApplication.
 
bool setSingleInstance (const QString &key)
 returns name of the theme that the application is currently using.
 
bool setSingleInstance (const QString &key, SingleScope singleScope)
 一个重写函数,增加了控制单实例范围的 singleScope 参数。
 
bool loadTranslator (QList< QLocale > localeFallback=QList< QLocale >()<< QLocale::system())
 loads translate file from system or application data path.
 
QString productName () const
 returns the product name of this application.
 
void setProductName (const QString &productName)
 sets the product name of this application.
 
const QIcon & productIcon () const
 returns the product icon of this application.
 
void setProductIcon (const QIcon &productIcon)
 sets the product icon of this application.
 
QString applicationLicense () const
 returns the license used by this application.
 
void setApplicationLicense (const QString &license)
 sets the license of this application.
 
QString applicationDescription () const
 returns the long description of the application.
 
void setApplicationDescription (const QString &description)
 sets the description of the application.
 
QString applicationHomePage () const
 程序的主页地址.
 
void setApplicationHomePage (const QString &link)
 
QString applicationAcknowledgementPage () const
 returns the acknowlegement page of the application.
 
void setApplicationAcknowledgementPage (const QString &link)
 sets the acknowlegement page of the application.
 
bool applicationAcknowledgementVisible () const
 是否显示关于对话框中的鸣谢地址显示.
 
void setApplicationAcknowledgementVisible (bool visible)
 设置是否显示关于对话框中的鸣谢地址显示.
 
DAboutDialogaboutDialog ()
 returns the about dialog of this application.
 
void setAboutDialog (DAboutDialog *aboutDialog)
 sets the aboutDialog of this application.
 
DFeatureDisplayDialogfeatureDisplayDialog ()
 
void setFeatureDisplayDialog (DFeatureDisplayDialog *featureDisplayDialog)
 
bool visibleMenuShortcutText () const
 
void setVisibleMenuShortcutText (bool value)
 
bool visibleMenuCheckboxWidget () const
 
void setVisibleMenuCheckboxWidget (bool value)
 
bool visibleMenuIcon () const
 
void setVisibleMenuIcon (bool value)
 
bool autoActivateWindows () const
 
void setAutoActivateWindows (bool autoActivateWindows)
 
void acclimatizeVirtualKeyboard (QWidget *window)
 用于窗口中可输入控件自适应虚拟键盘.
 
void ignoreVirtualKeyboard (QWidget *window)
 恢复虚拟键盘的自适应操作.
 
bool isAcclimatizedVirtualKeyboard (QWidget *window) const
 是否自适应虚拟键盘
 
QString applicationCreditsFile () const
 
void setApplicationCreditsFile (const QString &file)
 
QByteArray applicationCreditsContent () const
 
void setApplicationCreditsContent (const QByteArray &content)
 
QString licensePath () const
 
void setLicensePath (const QString &path)
 
void setCustomHandler (DAppHandler *handler)
 设置 app 的处理程序.
 
DAppHandlercustomHandler ()
 获取设置的 app 定制化处理程序
 
bool notify (QObject *obj, QEvent *event) Q_DECL_OVERRIDE
 

静态 Public 成员函数

static DApplicationglobalApplication (int &argc, char **argv)
 返回一个DApplicatioin实例.
 
static bool isDXcbPlatform ()
 强制程序使用的平台插件到dxcb.
 
static int buildDtkVersion ()
 返回编译时的dtk版本.
 
static int runtimeDtkVersion ()
 返回运行时的dtk版本.
 
static void registerDDESession ()
 用于跟 startdde 进行通信,告知 startdde 进程已经启动成功.
 
static void customQtThemeConfigPathByUserHome (const QString &home)
 根据用户家目录设置Qt主题配置文件的目录.
 
static void customQtThemeConfigPath (const QString &path)
 自定义 Qt 主题配置文件的路径。
 
static QString customizedQtThemeConfigPath ()
 自定义 Qt 主题配置文件路径.
 
static QString buildVersion (const QString &fallbackVersion)
 

Protected 成员函数

virtual void handleHelpAction ()
 DApplication::handleHelpAction
 
virtual void handleAboutAction ()
 用于处理菜单中关于按钮的点击
 
virtual void handleQuitAction ()
 用于处理菜单中退出按钮的点击
 

属性

bool visibleMenuShortcutText
 菜单项快捷键文本的可视化属性
 
bool visibleMenuCheckboxWidget
 菜单项内 CheckBox 控件的可视化属性
 
bool visibleMenuIcon
 菜单按钮的可视化属性.
 
bool autoActivateWindows
 
QString applicationCreditsFile
 
QByteArray applicationCreditsContent
 
QString licensePath
 

友元

class DTitlebarPrivate
 
class DMainWindowPrivate
 

详细描述

DApplication 是 DTK 中用于替换 QCoreApplication 相关功能实现的类.

\inmodule dtkwidget

继承自 QApplication ,并在此之上添加了一些特殊的设定,如:

  • 在 FORCE_RASTER_WIDGETS 宏生效的情况下,默认设置 Qt::AA_ForceRasterWidgets 以减少 glx 相关库的加载,减少程序启动时间;
  • 自动根据 applicationName 和 系统 locale 加载对应的翻译文件;
  • 会根据系统gsettings中 com.deepin.dde.dapplication 的 qpixmapCacheLimit 值来设置 QPixmapCache::cacheLimit ;
  • 会根据系统gsettings中 com.deepin.dde.touchscreen longpress-duration 的值来设置 QTapAndHoldGesture::timeout ;
  • 方便地通过 setSingleInstance 来实现程序的单实例。
注解
DApplication 设置的 QTapAndHoldGesture::timeout 会比 gsettings 中的值小 100,用来绕过 Dock 长按松开容易导致应用启动的问题,详细解释见 见代码注释或者 \l {https://github.com/linuxdeepin/internal-discussion/issues/430}
参见
loadTranslator() setSingleInstance()

构造及析构函数说明

◆ DApplication()

Dtk::Widget::DApplication::DApplication ( int &  argc,
char **  argv 
)

constructs an instance of DApplication.

用于构建 DApplication 实例的构造函数

argc is the same as in the main function. argc 作用同 QApplication::QApplication 参数 argc。 argv is the same as in the main function. argv 作用同 QApplication::QApplication 参数 argv。

对象构造时会判断环境变量 DTK_FORCE_RASTER_WIDGETS 的值,如果为 TRUE 则开启 Qt::AA_ForceRasterWidgets,为 FALSE 则不开启,当没有设置此环境变量时,如果 编译时使用了宏 FORCE_RASTER_WIDGETS(龙芯和申威平台默认使用),则开启 Qt::AA_ForceRasterWidgets,否则不开启。

成员函数说明

◆ aboutDialog()

DAboutDialog * Dtk::Widget::DApplication::aboutDialog ( )

returns the about dialog of this application.

返回一个基于当前程序信息的关于对话框.

If the about dialog is not set, it will automatically construct one. 此对话框可以通过 DApplication::setAboutDialog 进行设置,如果没有设置就使用此函数进行获取, 系统会创建一个新的关于对话框。

返回
the about dialog instance.
参见
DApplication::setAboutDialog

◆ acclimatizeVirtualKeyboard()

void Dtk::Widget::DApplication::acclimatizeVirtualKeyboard ( QWidget *  window)

用于窗口中可输入控件自适应虚拟键盘.

为窗口的可输入控件添加自动适应虚拟键盘输入法的功能。开启此功能后,当 监听到 QInputMethod::keyboardRectangleChanged 后,会判断当 前的可输入(不仅仅是处于焦点状态)控件是否为此 window 的子控件, 如果是,则将通过 QWidget::setContentsMargins 更新 window 的布局区域,以此确保可输入控件处于可见区域。如果可输入控件处于一个 QAbstractScrollArea 中,将会压缩 window 的布局空间,促使 可滚动区域缩小,再使用 QAbstraceScrollArea::scrollContentsBy 将可输入控件滚动到合适的区域,否则将直接把 window 的内容向上移动为虚拟键盘 腾出空间。

注解
在使用之前要确保窗口的 Qt::WA_LayoutOnEntireRect 和 Qt::WA_ContentsMarginsRespectsSafeArea 都为 false

window 必须是一个顶层窗口

参见
QWidget::isTopLevel QWidget::setContentsMargins
QInputMethod::cursorRectangle QInputMethod::inputItemClipRectangle QInputMethod::keyboardRectangle
QAbstractScrollArea

◆ applicationAcknowledgementPage()

QString Dtk::Widget::DApplication::applicationAcknowledgementPage ( ) const

returns the acknowlegement page of the application.

记录程序的鸣谢信息网址,主要用于在关于对话框中进行展示.

It's mainly used to construct an about dialog of the application.

返回
the acknowlegement page of the application if set, otherwise empty.

◆ applicationAcknowledgementVisible()

bool Dtk::Widget::DApplication::applicationAcknowledgementVisible ( ) const

是否显示关于对话框中的鸣谢地址显示.

返回
显示鸣谢地址返回 true,否则返回 false。
参见
DApplication::setApplicationAcknowledgementVisible

◆ applicationDescription()

QString Dtk::Widget::DApplication::applicationDescription ( ) const

returns the long description of the application.

属性记录了程序的描述信息,主要用于关于对话框中的信息展示.

It's mainly used to construct an about dialog of the application.

返回
the description of the application if set, otherwise empty.

◆ applicationHomePage()

QString Dtk::Widget::DApplication::applicationHomePage ( ) const

程序的主页地址.

该属性记录程序的主页网址,主要用于在关于对话框中进行展示。 默认情况下,该地址为 Uos 或者 Deepin 官方网站地址。

◆ applicationLicense()

QString Dtk::Widget::DApplication::applicationLicense ( ) const

returns the license used by this application.

It's mainly used to construct an about dialog of the application.

applicationLicense 属性是程序所使用的授权协议; 主要用于在关于对话框中进行展示,默认值为 GPLv3。

返回
the license used by this application.

◆ customizedQtThemeConfigPath()

QString Dtk::Widget::DApplication::customizedQtThemeConfigPath ( )
static

自定义 Qt 主题配置文件路径.

返回
返回自定义的 Qt 主题配置文件路径,未设置过此路径时返回为空。
参见
DApplication::customQtThemeConfigPath

◆ customQtThemeConfigPath()

void Dtk::Widget::DApplication::customQtThemeConfigPath ( const QString &  path)
static

自定义 Qt 主题配置文件的路径。

默认文件通常为 "~/.config/deepin/qt-theme.ini" 其中包含应用的图标主题、字体、、屏幕缩放等相关的配置项。可应用于以root用户启动的 应用,需要跟随某个一般用户的主题设置项。 path 中不包含 "/deepin/qt-theme.ini" 部分,如:path = "/tmp", 则配置文件路径为:"/tmp/deepin/qt-theme.ini"。 path 不要以 "/" 结尾

警告
必须在构造 DApplication 对象之前调用
参见
DApplication::customizedQtThemeConfigPath

◆ customQtThemeConfigPathByUserHome()

void Dtk::Widget::DApplication::customQtThemeConfigPathByUserHome ( const QString &  home)
static

根据用户家目录设置Qt主题配置文件的目录.

home 家目录,不要以 "/" 结尾

警告
必须在构造 DApplication 对象之前调用
参见
DApplication::customQtThemeConfigPath

◆ globalApplication()

DApplication * Dtk::Widget::DApplication::globalApplication ( int &  argc,
char **  argv 
)
static

返回一个DApplicatioin实例.

如果在执行此函数之前DApplication已经被创建则返回已存在的实例,否则直接创建一个 新的DApplication实例并返回。主要用于与deepin-trubo服务相配合,用于共享 deepin-turbo dtkwidget booster中已经创建的DApplication对象,以此节省初始化时间。

argc 传递给DApplication的构造函数 argv 传递给DApplication的构造函数

返回
返回一个DApplication对象
警告
不保证获取的DApplication对象一定有效,如果实例已存在,则直接使 用static_case将其转换为DApplication对象

◆ handleAboutAction()

void Dtk::Widget::DApplication::handleAboutAction ( )
protectedvirtual

用于处理菜单中关于按钮的点击

Triggered when user clicked the about menu item of this window's titlebar, default action is to show the about dialog of this window(if there is one), override this method if you want to change the default action.

该函数在用户点击窗口标题栏的关于按钮时触发,默认实现为打开程序关于对话框, 子类可以重现实现此函数以覆盖其默认行为。

◆ handleHelpAction()

void Dtk::Widget::DApplication::handleHelpAction ( )
protectedvirtual

DApplication::handleHelpAction

Triggered when user clicked the help menu item of this window's titlebar, default action is to open the user manual of this program, override this method if you want to change the default action.

用于处理菜单中帮助按钮的点击.

该函数在用户点击窗口标题栏的帮助按钮时触发。 默认实现为打开当前程序的帮助手册,子类可以重现实现此函数以覆盖其默认行为。

◆ handleQuitAction()

void Dtk::Widget::DApplication::handleQuitAction ( )
protectedvirtual

用于处理菜单中退出按钮的点击

Triggered when user clicked the exit menu item of this window's titlebar, default action is to quit this program, you can try to save your data before the program quitting by connecting to the aboutToQuit signal of this application. override this method if you want to change the default action.

该函数在用户点击窗口标题栏的关闭按钮时触发,默认行为是退出整个程序, 子类可以重写此函数以覆盖其行为。

◆ ignoreVirtualKeyboard()

void Dtk::Widget::DApplication::ignoreVirtualKeyboard ( QWidget *  window)

恢复虚拟键盘的自适应操作.

该函数用于恢复虚拟键盘到默认状态,将不会为虚拟键盘的环境做任何自适应操作。

注解
此操作不会恢复对 QWidget::contentsMargins 的修改 window 需是一个调用过 acclimatizeVirtualKeyboard 的窗口
参见
DApplication::isAcclimatizedVirtualKeyboard DApplication::acclimatizeVirtualKeyboard

◆ isAcclimatizedVirtualKeyboard()

bool Dtk::Widget::DApplication::isAcclimatizedVirtualKeyboard ( QWidget *  window) const

是否自适应虚拟键盘

返回
如果 window 会自适应虚拟键盘返回 true,否则返回 false

◆ isDXcbPlatform()

bool Dtk::Widget::DApplication::isDXcbPlatform ( )
static

强制程序使用的平台插件到dxcb.

这个函数的工作原理是通过设置 QT_QPA_PLATFORM 来影响平台插件的加载,所以此函数 必须在 DApplication 实例创建前进行调用。

返回
设置成功返回 true,否则返回 false。

检查当前程序是否使用了dxcb平台插件.

返回
正在使用返回 true,否则返回 false。

◆ loadTranslator()

bool Dtk::Widget::DApplication::loadTranslator ( QList< QLocale >  localeFallback = QList<QLocale>() << QLocale::system())

loads translate file from system or application data path.

加载程序的翻译文件.

You must name the file correctly; if the program is dde-dock, then the qm file for English locale would be dde-dock_en.qm. Translation files must be placed in correct directories as well. The lookup order is as follows:

\list

  • ~/.local/share/APPNAME/translations;
  • /usr/local/share/APPNAME/translations;
  • /usr/share/APPNAME/translations; \endlist

APPNAME is the name of program executable. localeFallback, a list of fallback locale you want load.

返回
load success return true, otherwise, return false.

使用这个函数需要保证翻译文件必须正确命名: 例如程序名叫 dde-dock, 那么翻译文件在中文locale下的名称必须是 dde-dock_zh_CN.qm;翻译文件还需要放置 在特定的位置,此函数会按照优先级顺序在以下目录中查找翻译文件:

\list

  • ~/.local/share/APPNAME/translations;
  • /usr/local/share/APPNAME/translations;
  • /usr/share/APPNAME/translations; \endlist

APPNAME 即可执行文件的名称。

localeFallback 指定了回退的locale列表,默认只有系统locale。

返回
加载成功返回 true,否则返回 false。

◆ productIcon()

const QIcon & Dtk::Widget::DApplication::productIcon ( ) const

returns the product icon of this application.

It's mainly used to construct an about dialog of the application.

productIcon 属性是程序的产品图标, 主要用于在关于对话框中进行展示。

返回
the product icon of this application if set, otherwise empty.
参见
productName, aboutDialog

◆ productName()

QString Dtk::Widget::DApplication::productName ( ) const

returns the product name of this application.

程序的产品名称.

It's mainly used to construct an about dialog of the application.

产品名称不同与 applicationName ,应该是类似如“深度终端”,而不是 deepin-terminal, 这个名称主要用于在程序的关于对话框中进行展示。 如果没有手动通过 setProductName 来设置,会尝试使用 QApplication::applicationDisplayName 来充当产品名称。

返回
the product name of this application if set, otherwise the applicationDisplayName.
参见
productIcon, aboutDialog

◆ registerDDESession()

void Dtk::Widget::DApplication::registerDDESession ( )
static

用于跟 startdde 进行通信,告知 startdde 进程已经启动成功.

注解
只有DDE系统组件需要使用此函数,普通应用无需使用。

◆ screenDevicePixelRatioChanged

Dtk::Widget::DApplication::screenDevicePixelRatioChanged ( QScreen *  screen)
signal

该信号在对应屏幕 screen 的缩放比可能发现变化时触发.

依赖于 deepin 平台主题插件(dde-qt5integration 包中提供),实时更改 屏幕缩放比是通过更改配置文件 ~/.config/deepin/qt-theme.ini 实现,与此相关的 配置项有三个: \list

  • ScreenScaleFactors:多屏幕设置不同缩放比,值格式和环境变量QT_SCREEN_SCALE_FACTORS一致
  • ScaleFactor: 设置所有屏幕缩放比,值格式和环境变量QT_SCALE_FACTOR一致
  • ScaleLogcailDpi:指定屏幕逻辑dpi,可影响仅设置了 point size 的 QFont 的绘制大小。 \endlist

未设置此值时,默认会在 ScreenScaleFactors 值改变后将屏幕逻辑dpi更改为主屏默认值,一般情况下,不需要设置此值。 ScreenScaleFactors 和 ScaleFactor 的值改变后,会触发所有屏幕的 QScreen::geometryChanged, 且会根据当前缩放 更新所有QWindow的geometry(更新时保持窗口的真实大小不变,新窗口大小=窗口真实大小/新的缩放比)。另外,可在构造 DApplication 对象之前设置 Qt::AA_DisableHighDpiScaling 为 true,或添加环境变量 D_DISABLE_RT_SCREEN_SCALE 禁用实时缩放的支持。

参见
QScreen::devicePixelRatio()

◆ setAboutDialog()

void Dtk::Widget::DApplication::setAboutDialog ( DAboutDialog aboutDialog)

sets the aboutDialog of this application.

为当前程序设置一个关于对话框.

It's mainly used to override the auto-constructed about dialog which is not a common case, so please do double check before using this method.

参见
DApplication::aboutDialog

◆ setApplicationAcknowledgementPage()

void Dtk::Widget::DApplication::setApplicationAcknowledgementPage ( const QString &  link)

sets the acknowlegement page of the application.

link is the acknowlegement page link to be shown in the about dialog.

◆ setApplicationAcknowledgementVisible()

void Dtk::Widget::DApplication::setApplicationAcknowledgementVisible ( bool  visible)

设置是否显示关于对话框中的鸣谢地址显示.

visible 为 true 显示鸣谢地址,为 false 隐藏鸣谢地址。

参见
DApplication::applicationAcknowledgementVisible

◆ setApplicationDescription()

void Dtk::Widget::DApplication::setApplicationDescription ( const QString &  description)

sets the description of the application.

description is description to be set.

◆ setApplicationLicense()

void Dtk::Widget::DApplication::setApplicationLicense ( const QString &  license)

sets the license of this application.

license is the license to be set.

◆ setCustomHandler()

void Dtk::Widget::DApplication::setCustomHandler ( DAppHandler handler)

设置 app 的处理程序.

如果要设置,必须对 help、about、quit 都进行处理。 handler 用于特定 App 中的自定义处理逻辑,需要继承实现。

参见
DApplication::customHandler

◆ setProductIcon()

void Dtk::Widget::DApplication::setProductIcon ( const QIcon &  productIcon)

sets the product icon of this application.

productIcon is the product icon to be set.

◆ setProductName()

void Dtk::Widget::DApplication::setProductName ( const QString &  productName)

sets the product name of this application.

productName is the product name to be set.

◆ setSingleInstance() [1/2]

bool Dtk::Widget::DApplication::setSingleInstance ( const QString &  key)

returns name of the theme that the application is currently using.

theme name can be one of light, dark, semidark or semilight. theme 属性表示当前程序使用的主题名称,目前可选的主题名称有 light、dark、semidark 和 semilight。

返回
the theme name.

set theme for the application to use the theme we provide.

theme is the name of the theme we want to set.

用于将程序设置成单实例.

key 是确定程序唯一性的ID,一般使用程序的二进制名称即可。

注解
一般情况下单实例的实现使用 QSystemSemaphore,如果你的程序需要在沙箱 环境如 flatpak 中运行,可选的一套方案是通过 DTK_DBUS_SINGLEINSTANCE 这个 编译宏来控制单实例使用 DBus 方案。
返回
设置成功返回 true,否则返回 false。

◆ setSingleInstance() [2/2]

bool Dtk::Widget::DApplication::setSingleInstance ( const QString &  key,
SingleScope  singleScope 
)

一个重写函数,增加了控制单实例范围的 singleScope 参数。

在Linux环境下默认使用DBus的方式实现单例判断,在其它环境或者设置了环境变量 DTK_USE_SEMAPHORE_SINGLEINSTANCE 时使用系统信号量的方式实现单例判断。

key 是确定程序唯一性的ID,一般使用程序的二进制名称即可。 singleScope 用于指定单实例的影响范围,具体见 DApplication::SingleScope 。

返回
设置成功返回 true,否则返回 false。

属性说明

◆ visibleMenuCheckboxWidget

Dtk::Widget::DApplication::visibleMenuCheckboxWidget
readwrite

菜单项内 CheckBox 控件的可视化属性

该属性代表了程序中菜单项是否显示Checkbox控件。 默认地,该属性为 false.

◆ visibleMenuIcon

Dtk::Widget::DApplication::visibleMenuIcon
readwrite

菜单按钮的可视化属性.

visibleMenuIcon 属性代表了程序中菜单项是否显示图标。 默认地,该属性为 false.

◆ visibleMenuShortcutText

Dtk::Widget::DApplication::visibleMenuShortcutText
readwrite

菜单项快捷键文本的可视化属性

该属性代表了程序中菜单项是否显示对应的快捷键。 默认地,该属性为 false.


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