Qt浮动窗口

  • 通过QDockWidget类来实现
  • 关键接口
    • void    setFeatures(DockWidgetFeatures features)
      • DockWidgetFeatures  是一个  QFlags 类型,用起来有点类似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浮动窗口_第1张图片
      • 关于Qt的窗口区域
        • Qt浮动窗口_第2张图片
  • 详尽的资料参考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
          #include
          #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;
          }

你可能感兴趣的:(Qt相关)