QT主窗口的停靠窗口實現


關於停靠窗口,現在我們所見的許多軟件都存在停靠窗口,如Visual Studio軟件的類視圖、屬性視圖和資源視圖都是停靠窗口的實際案例;停靠窗口作為主窗口的一部分,可以停靠、浮動、顯示隱藏等;

該博文主要講解在Qt下的停靠窗口的實現;主窗口為單文檔窗口,繼承於QMainWindow類,該類包含了標准的菜單欄,工具欄,內容窗口,狀態欄等;停靠窗口類為QDockWidget;主要是使用上述的兩個類;界面效果如下圖所示:

下面一步一步講解實現方式:

一、菜單的實現

菜單主要使用QMenu和QAction兩類,如圖中所示,主要有File和View菜單;代碼如下所示:

m_pFMenu =menuBar()->addMenu("&File");
m_pExit = new QAction(tr("&Exit"), this);
m_pExit->setShortcuts(QKeySequence::Quit);
connect(m_pExit, SIGNAL(triggered()), this, SLOT(close()));
m_pFMenu->addAction(m_pExit);

View菜單主要控制三個停靠窗口的顯示和隱藏:

m_pVMenu=menuBar()->addMenu("&View");
m_pVMenu->addAction(m_pDockWidget1->toggleViewAction());
m_pVMenu->addAction(m_pDockWidget2->toggleViewAction());
m_pVMenu->addAction(m_pDockWidget3->toggleViewAction());

二、內容窗口的實現

內容窗口作為主窗口的主要展示窗口,其隨着主窗口的伸縮而伸縮,該程序中使用QTextEdit類作為顯示文本信息

//創建QTextEdit對象
m_pTextEdit = new QTextEdit(this);
setCentralWidget(m_pTextEdit);

三、停靠窗口的實現

該程序使用三個停靠窗口,都放置在主窗口的左邊;其中左邊最頂端的停靠窗口實現如下代碼所示:

//創建QDockWidget對象
m_pDockWidget1 = new QDockWidget(this);
m_pDockWidget1->setWindowTitle("dock date");
//設置可停靠區域
m_pDockWidget1->setAllowedAreas(Qt::AllDockWidgetAreas);
//設置m_pDockWidget1內的部件
m_pCale = new QCalendarWidget(m_pDockWidget1);
m_pCale->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
m_pCale->setGridVisible(true);
m_pDockWidget1->setWidget(m_pCale);

//主窗口中添加dock
addDockWidget(Qt::LeftDockWidgetArea, m_pDockWidget1);

OK。。。基本就講解完了,是不是很方便很簡潔也很好懂;我把代碼也共享出來,不對之處,望大家提出來共同討論!!!

源碼下載地址:http://files.cnblogs.com/appsucc/DockWindow.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM