Comment changer l’icône de MDI subWindow?

Regardez l’image suivante:

J’ai créé la Sub Window manière dynamic.

J’ai essayé d’utiliser la fonction setWindowIcon comme suit:

 mdiWindows->setWindowIcon(QIcon("icon.ico")); 

Mais ça ne marche pas bien.

Voir également le code suivant (création de la fenêtre MDI):

 QWidget *widget = new QWidget(this); QTextEdit *TextEdit = new QTextEdit(widget); TextEdit->setObjectName("myTextEdit"); QMdiSubWindow *mdiWindows = ui->mdiArea->addSubWindow(widget); mdiWindows->setGeometry(5, 5, 300, 250); mdiWindows->setWindowTitle("untitled" + QSsortingng::number(ui->mdiArea->subWindowList().count())); mdiWindows->setWindowState(Qt::WindowMaximized); mdiWindows->layout()->addWidget(TextEdit); mdiWindows->layout()->setContentsMargins(0,0,0, mdiWindows->layout()->setSpacing( mdiWindows->show(); 

Comment changer l’icône de MDI subWindow?

Qu’est-ce qui ne va pas?

J’ai essayé d’utiliser la fonction setWindowIcon comme suit: mdiWindows-> setWindowIcon (QIcon (“icon.ico”));

Mais vous avez mal agi parce que:

  1. Vous définissez l’icône sur mdiWindow elle-même plutôt que sur subWindow.
  2. En outre, .ico est pour l’ icône de l’application dans Windows , vous devez simplement utiliser le format .jpg ou .png . Les détails de la liste des formats pris en charge par défaut peuvent être trouvés ici .

(Si vous insistez sur le fichier .ico , il existe une solution de contournement. Vérifiez: “les icons .ico n’apparaissent pas sous Windows” )


Solution:

Par conséquent, changez cette ligne mdiWindows->setWindowIcon(QIcon("icon.ico"));

dans: widget->setWindowIcon(QIcon(":/myIcon/icon.png"));

(Notez que vous pouvez faire la même chose sur d’autres dérivés de QWidget: QMainWindow, QDialog … etc. pour définir leur icône de fenêtre.)

En d’autres termes, insérez la ligne ci-dessus dans votre code:

 //QWidget *widget = new QWidget(this); //QTextEdit *TextEdit = new QTextEdit(widget); //TextEdit->setObjectName("myTextEdit"); widget->setWindowIcon(QIcon(":/myIcon/icon.png")); //QMdiSubWindow *mdiWindows = ui->mdiArea->addSubWindow(widget); //mdiWindows->setGeometry(5, 5, 300, 250); //mdiWindows->setWindowTitle("untitled" + QSsortingng::number(ui->mdiArea->subWindowList().count())); //mdiWindows->setWindowState(Qt::WindowMaximized); //mdiWindows->layout()->addWidget(TextEdit); //mdiWindows->layout()->setContentsMargins(0,0,0, //mdiWindows->layout()->setSpacing( //mdiWindows->show(); 

entrez la description de l'image ici


PS

Juste au cas où, si vous souhaitez les définir plus tard, vous pouvez appeler QMdiArea::subWindowList() pour obtenir la liste de mdiWindows, puis définir des icons séparément. Par exemple:

 mdiWindows->subWindowList().at(1)->setWindowIcon(QIcon(":/myIcon/icon.png")); 

Cela fonctionne de la même manière.