首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QResource之后更新图标::registerResource()

在QResource之后更新图标::registerResource()
EN

Stack Overflow用户
提问于 2017-05-08 19:22:47
回答 1查看 126关注 0票数 0

我有一个程序可以成功地更改资源文件(QResource::registerResource())。

问题是我的图标不会自动改变。

我已经实现了一些可行的解决方案,但它们似乎对我没有真正的好处.

看一看:

解决方案1

这不是一个很糟糕的解决方案,但对我来说是手工做的。这个项目有很多图标

代码语言:javascript
复制
QPixmap pix(":/images/save");
QIcon icon(pix);
ui->myBtn->setIcon(icon);

溶质2

真的很糟糕,性能问题,也太手工了。

代码语言:javascript
复制
QObject::disconnect(ui->myBtn, SIGNAL(clicked()), this, SLOT(changeResources()));
ui->setupUi(this);
QObject::connect(ui->myBtn, SIGNAL(clicked()), this, SLOT(changeResources()));

我原以为调用窗口的QWidget::update()方法可以完成这项工作,但不幸的是,没有。

有没有更聪明的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-25 16:59:31

我们找到的最佳解决方案是创建一个IconManager,它处理应用程序中的所有图标。

要创建和应用图标,我们使用IconManager::create(QWidget *widget, QString iconPath);

然后,当我们需要更新我们称为IconManager::refreshAll();的所有图标时

在它的内部,我们在小部件和iconPath之间有一个映射,当被称为refreshAll时,我们做一些类似于

代码语言:javascript
复制
for (std::map<QWidget*, String>::iterator it = Map.begin(); it != Map.end(); ++it)
{
    QPixmap pix(it->second);
    QIcon icon(pix);
    it->first->setIcon(icon);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43855742

复制
相关文章

相似问题

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