看下图:

我已经动态创建了 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 子窗口图标?

最佳答案

怎么了?



但是你做错了,因为:

  • 您在 mdiWindow 本身上设置图标 而不是它的子窗口。
  • 此外,.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/

    10-11 23:18
    查看更多