|
| Q_FLAGS (IconMatchedFlags) |
|
| DDciIcon () |
| 构造函数
|
|
| DDciIcon (const DCORE_NAMESPACE::DDciFile *dciFile) |
| 指定DCI文件的构造函数
|
|
| DDciIcon (const QString &fileName) |
|
| DDciIcon (const QByteArray &data) |
| 指定DCI文件数据的构造函数
|
|
| DDciIcon (const DDciIcon &other) |
| 拷贝构造函数,重载赋值运算符
|
|
DDciIcon & | operator= (const DDciIcon &other) noexcept |
|
| DDciIcon (DDciIcon &&other) noexcept |
|
DDciIcon & | operator= (DDciIcon &&other) noexcept |
|
void | swap (DDciIcon &other) noexcept |
| 交换两个DDciIcon对象
|
|
bool | isNull () const |
| 判断DCI图标是否为空
|
|
DDciIconMatchResult | matchIcon (int size, Theme theme, Mode mode, IconMatchedFlags flags=None) const |
| 获取DCI图标匹配元信息, 元信息仅能作为传入参数使用
|
|
int | actualSize (DDciIconMatchResult result) const |
| 获取DCI图标实际大小
|
|
int | actualSize (int size, Theme theme, Mode mode=Normal) const |
| 获取DCI图标实际大小
|
|
QList< int > | availableSizes (Theme theme, Mode mode=Normal) const |
| 获取DCI图标可用大小列表
|
|
bool | isSupportedAttribute (DDciIconMatchResult result, IconAttibute attr) const |
|
QPixmap | pixmap (qreal devicePixelRatio, int iconSize, Theme theme, Mode mode=Normal, const DDciIconPalette &palette=DDciIconPalette()) const |
| 获取DCI图标的QPixmap
|
|
QPixmap | pixmap (qreal devicePixelRatio, int iconSize, DDciIconMatchResult result, const DDciIconPalette &palette=DDciIconPalette()) const |
| 获取DCI图标的QPixmap
|
|
void | paint (QPainter *painter, const QRect &rect, qreal devicePixelRatio, Theme theme, Mode mode=Normal, Qt::Alignment alignment=Qt::AlignCenter, const DDciIconPalette &palette=DDciIconPalette()) const |
| 绘制DCI图标
|
|
void | paint (QPainter *painter, const QRect &rect, qreal devicePixelRatio, DDciIconMatchResult result, Qt::Alignment alignment=Qt::AlignCenter, const DDciIconPalette &palette=DDciIconPalette()) const |
| 绘制DCI图标
|
|
DDciIconImage | image (DDciIconMatchResult result, int size, qreal devicePixelRatio) const |
|
如果需要详细dci相关介绍以及规范文档, 可以参见dci文件图标规范
DDciIcon示例
项目目录结构在同一目录下
CMakeLists.txt
cmake_minimum_required(VERSION 3.1.0) # 指定cmake最低版本
project(ddciicon-example VERSION 1.0.0 LANGUAGES CXX) # 指定项目名称, 版本, 语言 cxx就是c++
set(CMAKE_CXX_STANDARD 11) # 指定c++标准
set(CMAKE_CXX_STANDARD_REQUIRED ON) # 指定c++标准要求,至少为11以上
set(CMAKE_AUTOMOC ON) # 支持qt moc
set(CMAKE_AUTORCC ON) # support qt resource file # 支持qt资源文件
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # 支持 clangd
if (CMAKE_VERSION VERSION_LESS "3.7.0") # 如果cmake版本小于3.7.0
set(CMAKE_INCLUDE_CURRENT_DIR ON) # 设置包含当前目录
endif()
find_package(Qt5 REQUIRED COMPONENTS Core) # 寻找Qt5组件Core
find_package(Qt5 REQUIRED COMPONENTS Gui) # 寻找Qt5组件Core
find_package(Qt5 REQUIRED COMPONENTS Widgets) # 寻找Qt5组件Widgets
find_package(DtkCore REQUIRED) # 寻找Dtk组件Core
find_package(Dtk REQUIRED COMPONENTS Gui) # 寻找Dtk组件Gui
find_package(Dtk REQUIRED COMPONENTS Widget) # 寻找Dtk组件Widget
add_executable(${PROJECT_NAME} # 生成可执行文件
main.cpp
qml.qrc
)
target_link_libraries(${PROJECT_NAME} PRIVATE # 添加需要链接的共享库
Qt5::Core
Qt5::Gui
Qt5::Widgets
Dtk::Core
dtkgui
dtkwidget
)
main.cpp
#include <DApplication>
#include <DWidgetUtil>
#include <DIconButton>
#include <DDciIcon>
#include <QtDebug>
#include <QFormLayout>
#include <DMainWindow>
#include <QWidget>
#include <QLabel>
#include <QHBoxLayout>
DWIDGET_USE_NAMESPACE
int main(int argc, char *argv[])
{
DApplication a(argc, argv);
DMainWindow win;
QWidget w;
QFormLayout* layout = new QFormLayout(&w);
auto icon = dci.
matchIcon(0, DDciIcon::Light, DDciIcon::Hover);
auto addBtnRow = [&](DIconButton *iconBtn, const QString name){
iconBtn->setIconSize(QSize(32,32));
QHBoxLayout *hlayout = new QHBoxLayout();
hlayout->addWidget(iconBtn);
QLabel *btnLabel = new QLabel(name);
hlayout->addWidget(btnLabel);
return hlayout;
};
DIconButton *iconBtn1 = new DIconButton(dci);
layout->addRow(addBtnRow(iconBtn1, "icon button"));
DIconButton *iconBtn2 = new DIconButton(dci);
iconBtn2->setDisabled(true);
layout->addRow(addBtnRow(iconBtn2, "disabled state"));
DIconButton *iconBtn3 = new DIconButton(dci);
iconBtn3->setDown(true);
layout->addRow(addBtnRow(iconBtn3, "pressed state"));
win.setCentralWidget(&w);
win.resize(200,100);
win.show();
Dtk::Widget::moveToCenter(&win);
return a.exec();
}
static DDciIcon fromTheme(const QString &name)
从dci图标主题(包括内置dci图标资源)中获取图标名字为name的图标
Definition ddciicon.cpp:932
int actualSize(DDciIconMatchResult result) const
获取DCI图标实际大小
Definition ddciicon.cpp:822
DDciIconMatchResult matchIcon(int size, Theme theme, Mode mode, IconMatchedFlags flags=None) const
获取DCI图标匹配元信息, 元信息仅能作为传入参数使用
Definition ddciicon.cpp:817
qml.qrc
<RCC>
<qresource prefix="/dsg/built-in-icons">
<file>select_indicator.dci</file>
</qresource>
</RCC>
select_indicator.dci
下载dci-demo解压获取,这是个用qml编写的例子,使用DDciIcon更灵活 dci-demo
编译和运行程序
cmake -B build
cmake --build build
./build/ddciicon-example
程序运行效果如下: