请看下面的图片:
我已动态创建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 subWindow图标?
答案 0 :(得分:3)
我尝试使用
setWindowIcon
函数,如下所示: mdiWindows-> setWindowIcon(QIcon( “icon.ico”));
但你做错了,因为:
.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"));
这也是一样的。
答案 1 :(得分:0)
我无法获得这个公认的答案。不知道这是否是特定于版本的错误,但我使用的是PyQt5,
from PyQt5.QtCore import QT_VERSION_STR
from PyQt5.Qt import PYQT_VERSION_STR
print(f"QT: {QT_VERSION_STR}, PYQT: {PYQT_VERSION_STR}")
# QT: 5.9.6, PYQT: 5.9.2
对我来说,解决方法是直接在QMdiSubWindow
上设置图标,而不在窗口小部件上设置
mdiArea = ...
widget = ...
subwindow = mdiArea.addSubWindow(widget)
subwindow.setWindowTitle("My Widget")
myicon = ...
subwindow.setWindowIcon(myicon) # <-- this line
widget.show()
请注意,至少在Windows上,图标{strong>必须似乎是.ico
文件,使用.png
似乎不起作用,至少对我来说是这样。