DtkWidget
DTK Widget module
|
DSettingsDialog 为使用DSettings的Dtk程序提供一个通用的设置对话框,这个对话框可以通过json配置文件来自动生成 更多...
Public 槽 | |
void | updateSettings (DTK_CORE_NAMESPACE::DSettings *settings) |
void | updateSettings (const QByteArray &translateContext, DTK_CORE_NAMESPACE::DSettings *settings) |
void | setGroupVisible (const QString &groupKey, bool visible) |
Public 槽 继承自 Dtk::Widget::DAbstractDialog | |
void | moveToCenter () |
将对话框移动至屏幕中央或其父控件的中央 | |
void | moveToTopRight () |
将对话框移动至屏幕右上角或其父控件的右上角 | |
void | moveToCenterByRect (const QRect &rect) |
移动对话框到给定rect 区域的中央。rect 是移动对话框要参照的QRect 区域 | |
void | moveToTopRightByRect (const QRect &rect) |
移动对话框到给定rect 区域的右上角。rect 是移动所需要参照的QRect 位置。 | |
void | setDisplayPosition (DisplayPosition displayPosition) |
设置对话框显示位置 | |
Public 成员函数 | |
DSettingsDialog (QWidget *parent=nullptr) | |
DSettingsWidgetFactory * | widgetFactory () const |
获取当前对话框使用的控件构造工厂 | |
bool | groupIsVisible (const QString &groupKey) const |
void | setResetVisible (bool visible) |
DSettingsDialog::setResetV配置文件实例。isible 设置恢复默认设置按钮是否显示 | |
void | scrollToGroup (const QString &groupKey) |
DSettingsDialog::scrollToGroup 使对话框跳转到指定的 group 项目 | |
void | setIcon (const QIcon &icon) |
DSettingsDialog::setIcon 设置标题栏的图标 QIcon | |
Public 成员函数 继承自 Dtk::Widget::DAbstractDialog | |
DAbstractDialog (QWidget *parent=nullptr) | |
构造一个DAbstractDialog实例 | |
DAbstractDialog (bool blurIfPossible, QWidget *parent=nullptr) | |
构造一个 DAbstractDialog 实例 | |
DisplayPosition | displayPosition () const |
void | move (const QPoint &pos) |
将窗口移动到指定坐标 | |
void | move (int x, int y) |
将窗口移动到指定坐标 | |
void | setGeometry (const QRect &rect) |
构造一个矩形 | |
void | setGeometry (int x, int y, int width, int height) |
额外继承的成员函数 | |
Public 类型 继承自 Dtk::Widget::DAbstractDialog | |
enum | DisplayPosition { Center , TopRight } |
对话框显示位置 更多... | |
enum | DisplayPostion { DisplayCenter = Center , DisplayTopRight = TopRight } |
信号 继承自 Dtk::Widget::DAbstractDialog | |
void | sizeChanged (QSize size) |
窗口大小发生改变 | |
Protected 成员函数 继承自 Dtk::Widget::DAbstractDialog | |
void | mouseMoveEvent (QMouseEvent *event) Q_DECL_OVERRIDE |
对话框的鼠标移动事件 | |
void | mousePressEvent (QMouseEvent *event) Q_DECL_OVERRIDE |
对话框的鼠标点击事件 | |
void | mouseReleaseEvent (QMouseEvent *event) Q_DECL_OVERRIDE |
对话框的鼠标释放事件 | |
void | resizeEvent (QResizeEvent *event) Q_DECL_OVERRIDE |
窗口大小改变事件 | |
void | showEvent (QShowEvent *event) override |
窗口显示事件,如果收到过鼠标移动事件不再使用自动布局 | |
DAbstractDialog (DAbstractDialogPrivate &dd, QWidget *parent=nullptr) | |
属性 继承自 Dtk::Widget::DAbstractDialog | |
DisplayPosition | displayPosition |
获取对话框显示位置 | |
DSettingsDialog 为使用DSettings的Dtk程序提供一个通用的设置对话框,这个对话框可以通过json配置文件来自动生成
通过一个简单的示例来学会使用 DSettingsDialog ,这个示例要实现这样一个类似浏览器设置的需求 当打开新项目时的设置和打开新窗口/新标签时的设置
通过json文件来写设置的需求,如下:
json设置了一个基础设置,分为 open_action 和 New Tab & Window 两块,两块又分别有其具体的两个设置, open_action 有一个是否总是在新窗口打开页面的设置和打开文件的设置,实现方式分别是 checkbox 和 combobox ; New Tab & Window 有一个新窗口打开的方式和新标签打开的方式两个设置,都是 combobox 实现。
其中实现控件除了checkbox、combobox还提供了lineedit, shortcut, spinbutton, buttongroup,radiogroup, slider, switchbutton,title1, title2,下文会在示例中一一展示
json文件配置完后需要将其添加到资源文件 resources.qrc
配置CMake
代码部分
运行程序,效果如下:
void DSettingsDialog::scrollToGroup | ( | const QString & | groupKey | ) |
DSettingsDialog::scrollToGroup 使对话框跳转到指定的 group 项目
[in] | groupKey | DSettings 中 groupKeys 以及其子项 childGroups |
void DSettingsDialog::setIcon | ( | const QIcon & | icon | ) |
DSettingsDialog::setIcon 设置标题栏的图标 QIcon
[in] | icon | 设置的 Icon |
void DSettingsDialog::setResetVisible | ( | bool | visible | ) |
DSettingsDialog::setResetV配置文件实例。isible 设置恢复默认设置按钮是否显示
[in] | visible | true显示 false隐藏 |
DSettingsWidgetFactory * DSettingsDialog::widgetFactory | ( | ) | const |
获取当前对话框使用的控件构造工厂
每一个设置对话框都有自己的构造工厂实例,这些实例并不会共享数据。