首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QStyle::standardIcon/standardPixmap与QStyle::StandardPixmap?

如何使用QStyle::standardIcon/standardPixmap与QStyle::StandardPixmap?
EN

Stack Overflow用户
提问于 2018-09-16 22:44:14
回答 1查看 3.2K关注 0票数 5

在我的代码中,有许多调用试图从QIcons标准像素映射创建QStyle,例如:

代码语言:javascript
复制
QIcon groupIcon;
groupIcon.addPixmap( style()->standardPixmap( QStyle::SP_DirClosedIcon ),
                     QIcon::Normal, QIcon::Off );
groupIcon.addPixmap( style()->standardPixmap( QStyle::SP_DirOpenIcon ),
                     QIcon::Normal, QIcon::On );

虽然这是正确的,因为使用模型的Qt::DecorationRole图标显示了基于项的展开状态的打开或关闭的图标,但它有两个问题:

  1. 它不友好,而且图标很小。
  2. QStyle::standardPixmap被标记为过时,QStyle::standardIcon被描述为首选方法。

不过,我不知道如何将上述代码转换为QStyle::standardIcon

代码语言:javascript
复制
QIcon groupIcon( style()->standardIcon( QStyle::SP_DirClosedIcon ) );

为关闭的项目很好的工作,并看上去很棒的hidpi。但我不知道如何添加SP_DirOpenIcon状态。没有像"QIcon::addIcon“这样的类似于QIcon::addPixmap的方法。

在这里采取什么正确的方法,这是友好的和未来的证明?

EN

回答 1

Stack Overflow用户

发布于 2018-09-16 23:09:56

如何将上述代码转换为QStyle::standardIcon

为了能够使用QStyle::standardIcon而不是QStyle::standardPixmap,请从带有QIcon::像素图的图标中选择特定的像素映射。

下面是我为您准备的如何更改代码以实现此目的的示例:

代码语言:javascript
复制
QIcon groupIcon;
QSize sz(16, 16);

groupIcon.addPixmap(style()->standardIcon(QStyle::SP_DirClosedIcon).pixmap(sz),
                     QIcon::Normal, QIcon::Off);
groupIcon.addPixmap(style()->standardIcon(QStyle::SP_DirOpenIcon).pixmap(sz),
                     QIcon::Normal, QIcon::On);

这里,16是请求的大小。请注意:

像素映射可能比请求的要小,但永远不会大。

因此,相应地调整此值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52358982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档