既存のコードは、図のように QToolbar 内にいくつかの QAction を実装しています。目的は、選択した Qaction のアイコンを点滅させることです。
したがって、クラス メンバーであるWizard_Stepに従って、このタイマー ハンドラが呼び出されるたびに、専用のQActionのアイコンが交互に変更されます。
これは 100% 機能していますが、このコードは非常に大きく、オブジェクトの方法でこのコードを因数分解して改善したいと考えています。QActionポインター、配列などを使用するようなことを考えています。
void MainWindow::on_Timer_Update()
{
Wizard_hide = !Wizard_hide ;
switch (Wizard_Step)
{
case 1 :
if ( Wizard_hide )
ui->actionOpen_Dir->setIcon(QIcon(QPixmap(":/Icons/dir_selected" ) ));
else
ui->actionOpen_Dir->setIcon(QIcon(QPixmap(":/Icons/dir") )) ;
break;
case 2 :
if ( Wizard_hide )
ui->actionAdd_Selected_Item->setIcon(QIcon(QPixmap(":/Icons/Selected_row_selected" ) ));
else
ui->actionAdd_Selected_Item->setIcon(QIcon(QPixmap(":/Icons/Selected_row") )) ;
break;
case 3 :
if ( Wizard_hide )
ui->actionClean_Filename->setIcon(QIcon(QPixmap(":/Icons/clean_selected" ) ));
else
ui->actionClean_Filename->setIcon(QIcon(QPixmap(":/Icons/clean") )) ;
break;
case 4 :
if ( Wizard_hide )
ui->actionApply_changes->setIcon(QIcon(QPixmap(":/Icons/Apply_selected" ) ));
else
ui->actionApply_changes->setIcon(QIcon(QPixmap(":/Icons/Apply") )) ;
break;
default: qDebug() << "error";
}
}