可停靠窗口

关于停靠窗口,现在我们所见的许多软件都存在停靠窗口,如Visual Studio软件的类视图、属性视图和资源视图都是停靠窗口的实际案例;停靠窗口作为主窗口的一部分,可以停靠、浮动、显示隐藏等;

该博文主要讲解在Qt下的停靠窗口的实现;主窗口为单文档窗口,继承于QMainWindow类,该类包含了标准的菜单栏,工具栏,内容窗口,状态栏等;停靠窗口类为QDockWidget;主要是使用上述的两个类;界面效果如下图所示:


下面一步一步讲解实现方式:
一、菜单的实现
菜单主要使用QMenu和QAction两类,如图中所示,主要有File和View菜单;代码如下所示:


  1. m_pFMenu =menuBar()->addMenu("&File");   
  2. m_pExit = new QAction(tr("&Exit"), this);   
  3. m_pExit->setShortcuts(QKeySequence::Quit);   
  4. connect(m_pExit, SIGNAL(triggered()), this, SLOT(close()));   
  5. m_pFMenu->addAction(m_pExit);  
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菜单主要控制三个停靠窗口的显示和隐藏:


  1. m_pVMenu=menuBar()->addMenu("&View");   
  2. m_pVMenu->addAction(m_pDockWidget1->toggleViewAction());   
  3. m_pVMenu->addAction(m_pDockWidget2->toggleViewAction());   
  4. m_pVMenu->addAction(m_pDockWidget3->toggleViewAction());  
m_pVMenu=menuBar()->addMenu("&View");
m_pVMenu->addAction(m_pDockWidget1->toggleViewAction());
m_pVMenu->addAction(m_pDockWidget2->toggleViewAction());
m_pVMenu->addAction(m_pDockWidget3->toggleViewAction());
二、内容窗口的实现
内容窗口作为主窗口的主要展示窗口,其随着主窗口的伸缩而伸缩,该程序中使用QTextEdit类作为显示文本信息


  1. //创建QTextEdit对象   
  2. m_pTextEdit = new QTextEdit(this);   
  3. setCentralWidget(m_pTextEdit);  
//创建QTextEdit对象
m_pTextEdit = new QTextEdit(this);
setCentralWidget(m_pTextEdit);
三、停靠窗口的实现
该程序使用三个停靠窗口,都放置在主窗口的左边;其中左边最顶端的停靠窗口实现如下代码所示:


  1. //创建QDockWidget对象   
  2. m_pDockWidget1 = new QDockWidget(this);   
  3. m_pDockWidget1->setWindowTitle("dock date");   
  4. //设置可停靠区域   
  5. m_pDockWidget1->setAllowedAreas(Qt::AllDockWidgetAreas);   
  6. //设置m_pDockWidget1内的部件   
  7. m_pCale = new QCalendarWidget(m_pDockWidget1);   
  8. m_pCale->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);   
  9. m_pCale->setGridVisible(true);   
  10. m_pDockWidget1->setWidget(m_pCale);   
  11. //主窗口中添加dock   
  12. addDockWidget(Qt::LeftDockWidgetArea, m_pDockWidget1);  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值