gpt4 book ai didi

qt - 如何在自定义样式表中使用 SP_* 图标?

转载 作者:行者123 更新时间:2023-12-04 22:02:39 25 4
gpt4 key购买 nike

Qt 的 QStyle 提供 standardIcon ,这使得在给定 StandardPixmap 值的情况下抓取标准图标成为可能:

const QStyle * style = QApplication::style();
const QIcon ok = style->standardIcon(QStyle::SP_DialogOkButton);

如果您想使用 .setIcon 手动设置图标,这非常棒。上,例如在QPushButtons或其它部件。但是,我想在(外部)样式表中设置图标。如果图标在 :/images/ok.icon 中可用,那会很容易:
#include <QApplication>
#include <QtWidgets>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QPushButton button("Example");
button.setStyleSheet(
"icon-size: 32px 32px;"
"qproperty-icon: url(:/images/ok.icon);" // <--
);

return a.exec();
}

但是,我想使用 style->standardIcon(QStyle::SP_DialogOkButton); ,不是资源系统中的图标。这可能吗,还是我需要手动准备所有图标?

TL; 博士
// What I have:
button.setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton));

// What I want:
button.setStyleSheet(
"qproperty-icon: url(some_url);"
);

最佳答案

那将是标准的 Qt 图标之一:

qproperty-icon: url(:/trolltech/styles/commonstyle/images/standardbutton-apply-16.png)

您可以在 qt-everywhere-opensource-src-4.8.0/src/gui/styles/images 中找到所有可用的图标

Will the icon get resized correctly if I set it to the -16.png variant?



文档说图标不会放大。您可以使用 -128.png它将根据 iconSize() 按比例缩小.

Also, the standardIcon uses the operating system/window manager default icons, whereas the trolltech icons differ. Any way to do this?



您可以通过 QIcon::fromTheme() 访问操作系统主题图标但这仅适用于 Linux。在 OSX 和 Windows 中,Qt 回退到资源中的标准图标。

如果你想要多个图标大小,能够使用系统图标并且仍然从资源中回退到图标,我建议你继承 QPushButton 并添加一个新的自定义属性来处理所有事情。
Q_PROPERTY(QString my_icons_set READ iconsSet WRITE setIconsSet)
...
void setIconsSet(QString icons)
{
// parse the string
}

然后在 css 中,您可以执行以下操作:
qproperty-my_icons_set: "fromTheme::dialog-ok, standardIcon::SP_DialogOkButton";

关于qt - 如何在自定义样式表中使用 SP_* 图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29027105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com