我有一个程序可以成功地更改资源文件(QResource::registerResource())。
问题是我的图标不会自动改变。
我已经实现了一些可行的解决方案,但它们似乎对我没有真正的好处.
看一看:
解决方案1
这不是一个很糟糕的解决方案,但对我来说是手工做的。这个项目有很多图标
QPixmap pix(":/images/save");
QIcon icon(pix);
ui->myBtn->setIcon(icon);溶质2
真的很糟糕,性能问题,也太手工了。
QObject::disconnect(ui->myBtn, SIGNAL(clicked()), this, SLOT(changeResources()));
ui->setupUi(this);
QObject::connect(ui->myBtn, SIGNAL(clicked()), this, SLOT(changeResources()));我原以为调用窗口的QWidget::update()方法可以完成这项工作,但不幸的是,没有。
有没有更聪明的解决方案?
发布于 2017-05-25 16:59:31
我们找到的最佳解决方案是创建一个IconManager,它处理应用程序中的所有图标。
要创建和应用图标,我们使用IconManager::create(QWidget *widget, QString iconPath);
然后,当我们需要更新我们称为IconManager::refreshAll();的所有图标时
在它的内部,我们在小部件和iconPath之间有一个映射,当被称为refreshAll时,我们做一些类似于
for (std::map<QWidget*, String>::iterator it = Map.begin(); it != Map.end(); ++it)
{
QPixmap pix(it->second);
QIcon icon(pix);
it->first->setIcon(icon);
}https://stackoverflow.com/questions/43855742
复制相似问题