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