问题描述
为QTreeWidgetItem设置QIcon后,禁用QTreeWidget发现整体变为灰色(包括ICON),所以开始查找原因:
- 一开始以为是QSS导致的,后发现清空QSS后效果不变
- 重新打开QSS,尝试使用QSS来设置,未找到解决方案
- 最终发现QIcon可以解决此问题
解决方案
class Q_GUI_EXPORT QIcon
{
public:
enum Mode { Normal, Disabled, Active, Selected };
enum State { On, Off };
...
void addPixmap(const QPixmap &pixmap, Mode mode = Normal, State state = Off);
...
QIcon可以设置Normal\Disabled等不同模式下不一样的图标,尝试后果然有效
QTreeWidgetItem* groupItem = new QTreeWidgetItem(ui->treeWidget);
QIcon icon;
icon.addPixmap(QPixmap(":/primary/folder.svg"), QIcon::Normal);
icon.addPixmap(QPixmap(":/disabled/folder.svg"), QIcon::Disabled);
groupItem->setIcon(0, icon);