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()。

  • 相关阅读:
    解决UITableView中Cell重用机制导致内容出错的方法总结
    Hdu 1052 Tian Ji -- The Horse Racing
    Hdu 1009 FatMouse' Trade
    hdu 2037 今年暑假不AC
    hdu 1559 最大子矩阵
    hdu 1004 Let the Balloon Rise
    Hdu 1214 圆桌会议
    Hdu 1081 To The Max
    Hdu 2845 Beans
    Hdu 2955 Robberies 0/1背包
  • 原文地址:https://www.cnblogs.com/MakeView660/p/12485957.html
Copyright © 2011-2022 走看看