Qt浮動窗口

  • 通過QDockWidget類來實現
  • 關鍵接口
    • void    setFeatures(DockWidgetFeatures features)
      • DockWidgetFeatures  是一個  QFlags<DockWidgetFeature> 類型,用起來有點類似linux裏經常用的按位與或的flag(但是用起來更安全,0x00000002可以和任何其他數例如0x01000000組合,甚至可能沒有這個flag,但是用用QFlags你只能用枚舉裏的幾個值去組合)。
      • 其中DockWidgetFeature  是一個枚舉量
        • enum    DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, AllDockWidgetFeatures, NoDockWidgetFeatures }
      • setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable)
    • void    setAllowedAreas(Qt::DockWidgetAreas areas)
      • 其中DockWidgetAreas 定義如下
      • 關於Qt的窗口區域
  • 詳盡的資料參考Qt Help,有demo,也有類文檔
  • 簡單demo
    • win7 Qt5.4
    • 來自http://www.cnblogs.com/hanzhaoxin/archive/2012/11/16/2774097.html 
    • mainwindow.cpp
        1. #include"mainwindow.h"
          #include<QDockWidget>
          #include<QTextEdit>
          #include"ui_mainwindow.h"
          MainWindow::MainWindow(QWidget*parent)
          :QMainWindow(parent),ui(newUi::MainWindow)
        2. {
          
          ui->setupUi(this); setWindowTitle(tr("Dock Windows")); QTextEdit*edt =newQTextEdit(tr("Main Window"),this); setCentralWidget(edt);//把edt設置爲中心控件 //停靠窗口1: QDockWidget*dockWidget1 =newQDockWidget(tr("Dock Window 1"),this); dockWidget1->setFeatures(QDockWidget::DockWidgetMovable); dockWidget1->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); QTextEdit*edt1 =newQTextEdit(tr("Window 1")); dockWidget1->setWidget(edt1); addDockWidget(Qt::RightDockWidgetArea,dockWidget1); //停靠窗口2: QDockWidget*dockWidget2 =newQDockWidget(tr("Dock Window 2"),this); dockWidget2->setFeatures(QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetClosable); QTextEdit*edt2 =newQTextEdit(tr("Window 2")); dockWidget2->setWidget(edt2); addDockWidget(Qt::LeftDockWidgetArea,dockWidget2); //停靠窗口3: QDockWidget*dockWidget3 =newQDockWidget(tr("Dock Window 3"),this); dockWidget3->setFeatures(QDockWidget::AllDockWidgetFeatures); QTextEdit*edt3 =newQTextEdit(tr("Window 3")); dockWidget3->setWidget(edt3); addDockWidget(Qt::BottomDockWidgetArea,dockWidget3);
          }
        3. 
          MainWindow::~MainWindow()
          {
          
          delete ui;
          }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章