看下图:
我已经动态创建了 Sub Window
。
我尝试使用 setWindowIcon
函数,如下所示:
mdiWindows->setWindowIcon(QIcon("icon.ico"));
但不能正常工作。
另请参阅以下代码(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" + QString::number(ui->mdiArea->subWindowList().count()));
mdiWindows->setWindowState(Qt::WindowMaximized);
mdiWindows->layout()->addWidget(TextEdit);
mdiWindows->layout()->setContentsMargins(0,0,0,
mdiWindows->layout()->setSpacing(
mdiWindows->show();
如何更改 MDI 子窗口图标?
最佳答案
怎么了?
但是你做错了,因为:
.ico
是为 应用程序图标在 Windows ,你应该只需使用
.jpg
或 .png
格式。默认支持格式列表的详细信息可以在 here 中找到。 (如果你坚持
.ico
文件,有一个解决方法。检查: ".ico icons not showing up on Windows" )解决方案:
因此,更改这一行
mdiWindows->setWindowIcon(QIcon("icon.ico"));
进入:
widget->setWindowIcon(QIcon(":/myIcon/icon.png"));
(请注意,您可以对其他 QWidget 衍生产品执行相同操作:QMainWindow、QDialog...等以设置它们的窗口图标)
换句话说,将上面的行插入到您的代码中:
//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" + QString::number(ui->mdiArea->subWindowList().count()));
//mdiWindows->setWindowState(Qt::WindowMaximized);
//mdiWindows->layout()->addWidget(TextEdit);
//mdiWindows->layout()->setContentsMargins(0,0,0,
//mdiWindows->layout()->setSpacing(
//mdiWindows->show();
附言
以防万一,如果您想稍后设置它们,您可以调用
QMdiArea::subWindowList()
来获取 mdiWindows 的列表,然后分别在它们上设置图标。例如:mdiWindows->subWindowList().at(1)->setWindowIcon(QIcon(":/myIcon/icon.png"));
这也是一样的。
关于c++ - 如何更改 MDI 子窗口图标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24366423/