根据您提供的代码,setHidden方法是用来设置QWidget的隐藏状态,并不直接影响QAction对象的可见性。如果您想要在执行setIconVisibleInMenu之后再设置图标,请确保将m_pAct_SelectAll->setIcon(icon);移动到m_pAct_SelectAll->setIconVisibleInMenu(false);之前,以确保先隐藏图标再设置新的图标。
修改后的代码如下所示:
void BusyParam::slot_SelectAllResults()
{
QIcon icon("D:\\Resource\\DaGou.png");
qDebug() << __LINE__ << " slot_SelectAllResults ";
if (m_SelectAllResults_PowerEnergy_status) {
//全选
qDebug() << __LINE__ << " slot_SelectAllResults ALL";
m_pPower_Energy_AllEnergy_Item->setHidden(false);
m_pPower_Energy_Peak_Item->setHidden(false);
m_pPower_Energy_MinValue_Item->setHidden(false);
m_SelectAllResults_PowerEnergy_status = false;
m_pAct_SelectAll->setIconVisibleInMenu(true);
m_pAct_AllEnergy->setIconVisibleInMenu(true);
m_pAct_Peak->setIconVisibleInMenu(true);
m_pAct_MinValue->setIconVisibleInMenu(true);
m_pAct_SelectAll->setIcon(icon);
m_pAct_AllEnergy->setIcon(icon);
m_pAct_Peak->setIcon(icon);
m_pAct_MinValue->setIcon(icon);
} else {
//隐藏
qDebug() << __LINE__ << " slot_SelectAllResults Hide";
m_pPower_Energy_AllEnergy_Item->setHidden(true);
m_pPower_Energy_Peak_Item->setHidden(true);
m_pPower_Energy_MinValue_Item->setHidden(true);
m_SelectAllResults_PowerEnergy_status = true;
m_pAct_SelectAll->setIconVisibleInMenu(false);
m_pAct_AllEnergy->setIconVisibleInMenu(false);
m_pAct_Peak->setIconVisibleInMenu(false);
m_pAct_MinValue->setIconVisibleInMenu(false);
// 先隐藏图标再设置新图标
m_pAct_SelectAll->setIcon(icon);
m_pAct_AllEnergy->setIcon(icon);
m_pAct_Peak->setIcon(icon);
m_pAct_MinValue->setIcon(icon);
}
}
请确保将上述修改应用于适当的位置,以确保在设置图标可见性之后设置新的图标。这样您就可以在执行m_pAct_SelectAll->setIconVisibleInMenu(false);后再次调用m_pAct_SelectAll->setIcon(icon);来设置新的图标了。
内容由零声教学AI助手提供,问题来源于学员提问




