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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM