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?
J’ai essayé d’utiliser la fonction
setWindowIcon
comme suit: mdiWindows-> setWindowIcon (QIcon (“icon.ico”));
Mais vous avez mal agi parce que:
.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” )
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();
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.