zoukankan      html  css  js  c++  java
  • Qt MDI子窗口图标设置问题

    使用Qt QMainWindow建立MDI应用程序,QMainWindow充当主窗口,默认地,窗口图标为空,即QIcon()。
    如果想设置主窗口的图标,调用setWindowIcon(QIcon *ico)即可。

    我在主窗口中放置多窗口区域:setCenteralWidget(QMdiArea *area);
    通过下面代码设置子窗口图标,不起作用,还是默认的Qt图标:

    1 QWidget *win = new QWidget();
    2 win->setMinimumSize(100,100);
    3 win->setWindowTitle("Sub Window");
    4 win->setWindowIcon(QIcon("://*.ico"));
    5 m_area->addSubWindow(win);

    QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = ...)
    其实设置子窗口图标需要通过QMdiSubWindow来设置:

    1 QWidget *win = new QWidget();
    2 win->setMinimumSize(100,100);
    3 win->setWindowTitle("Sub Window");
    4 win->setWindowIcon(QIcon("://*.ico"));    // 不生效
    5 QMdiSubWindow *subWin = m_area->addSubWindow(win);
    6 subWin->setWindowIcon(QIcon("://*.ico"));    // 生效

    其实,也可以稍后设置:

    1 QList<QMdiSubWindow *> subList = m_area->subWindowList();
    2 for (int i = 0; i < subList.size(); ++i) {
    3      QMdiSubWindow *sub = subList[i];
    4      if (nullptr != sub) {
    5            sub->setWindowIcon(QIcon("://*.ico"));
    6      }   
    7 }

    效果图:

    PS:主窗口默认无图标,子窗口默认QApplocation::windowIco()。

  • 相关阅读:
    xml文档格式学习笔记
    Visual Studio学习记录
    Java学习笔记
    C#项目学习记录
    Linux命令行与shell脚本编程大全 学习笔记
    NodeJS (npm) 学习笔记
    Angular学习笔记
    TypeScript学习笔记
    java 项目相关 学习记录
    docker学习记录
  • 原文地址:https://www.cnblogs.com/MakeView660/p/12485957.html
Copyright © 2011-2022 走看看