【转】QDockWidget 停靠窗口和工具栏

 

转:http://blog.csdn.net/a649518776/article/details/6636490

 

下面用代码实现上面窗口的设计:

1.建立项目时基类选择QMainWindow,取消Gernerate form复选框的选中状态。

2.在源文件mainwindow.cpp中编写如下代码:

[cpp]  view plain copy
  1. #include "mainwindow.h"  
  2. #include <QTextEdit>  
  3. #include <QDockWidget>  
  4. MainWindow::MainWindow(QWidget *parent)  
  5.     : QMainWindow(parent)  
  6. {  
  7.     //设置主窗口  
  8.     setWindowTitle(tr("DockWindwos"));  
  9.     QTextEdit *te=new QTextEdit(this);  
  10.     te->setText(tr("Main Window"));  
  11.     te->setAlignment(Qt::AlignCenter);  
  12.     setCentralWidget(te);  
  13.     //设置停靠窗口1  
  14.     QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this);  
  15.     dock->setFeatures(QDockWidget::DockWidgetMovable);  
  16.     dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);  
  17.     QTextEdit *te1=new QTextEdit();  
  18.     te1->setText(tr("Window1,The dock widget can be moved between docks by the user"));  
  19.     dock->setWidget(te1);  
  20.     addDockWidget(Qt::RightDockWidgetArea,dock);  
  21.     //设置停靠窗口2  
  22.     dock=new QDockWidget(tr("DockWindow2"),this);  
  23.     dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable);  
  24.     QTextEdit *te2=new QTextEdit();  
  25.     te2->setText(tr("Window2,The dock widget can floated and can be closed"));  
  26.     dock->setWidget(te2);  
  27.     addDockWidget(Qt::RightDockWidgetArea,dock);  
  28.     //设置停靠窗口3  
  29.     dock=new QDockWidget(tr("DockWindow3"),this);  
  30.     dock->setFeatures(QDockWidget::AllDockWidgetFeatures);  
  31.     QTextEdit *te3=new QTextEdit();  
  32.     te3->setText(tr("Window3,The dock widget can be closed, moved and floated"));  
  33.     dock->setWidget(te3);  
  34.     addDockWidget(Qt::RightDockWidgetArea,dock);  
  35. }  
  36.   
  37. MainWindow::~MainWindow()  
  38. {  
  39.   
  40. }  



 

 

解析:

1.创建一个QDockWidget对象的停靠窗体:

 

QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this);

第一个参数是停靠窗体的名称,第二个参数是停靠窗体的父窗体。

 


2.设置此停靠窗体的属性:

dock->setFeatures(QDockWidget::DockWidgetMovable);

 

设置停靠窗体特性:

×可关闭:有一个关闭按钮

×可移动:


将DockWindow移动到左边了。

×可浮动:


DockWindow3可以单独脱离主窗口浮动出来。

×其他参数:

QDockWidget::AllDockWidgetFeatures //拥有所有属性
QDockWidget::NoDockWidgetFeatures //不可移动,不可关闭,不可浮动

 

3.将TextEdit加入停靠窗体

dock->setWidget(te1);

 

4.将停靠窗体加入主窗体中

addDockWidget(Qt::RightDockWidgetArea,dock);

 

最后编译运行:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中的QDockWidget是一个浮动窗口,可以在主窗口中显示。你可以使用以下方法创建和配置QDockWidget: 1. 创建QDockWidget对象:使用QDockWidget的构造函数创建一个QDockWidget对象,可以设置标题和父对象。例如:QDockWidget *dockWidget = new QDockWidget("浮动", this); 2. 添加到主窗口:使用addDockWidget()函数将QDockWidget添加到主窗口的指定区域。例如:addDockWidget(Qt::BottomDockWidgetArea, dockWidget);这将使浮动窗口显示在主窗口的底部。 3. 设置停靠区域:使用setAllowedAreas()函数设置QDockWidget的允许停靠区域,可以限制它只能在指定的上下左右位置停靠。例如:dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);这将限制浮动窗口只能在顶部和底部停靠。 关于工具栏,你可以使用QToolBar来创建和配置工具栏: 1. 创建QToolBar对象:使用QToolBar的构造函数创建一个QToolBar对象,并将其添加到主窗口。例如:QToolBar *toolbar = new QToolBar(this); addToolBar(toolbar);默认情况下,工具栏将显示在上方,但你可以使用addToolBar()函数的第一个参数设置它在想要的地方显示。例如:addToolBar(Qt::LeftToolBarArea, toolbar);这将将工具栏显示在左侧。 2. 设置停靠区域:使用setAllowedAreas()函数设置工具栏允许停靠的区域。例如:toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);这将限制工具栏只能在左侧和右侧停靠。 3. 添加操作和分隔符:使用addAction()函数向工具栏添加操作,使用addSeparator()函数添加分隔符。例如:toolbar->addAction(newAction); toolbar->addSeparator(); toolbar->addAction(openAction);这将向工具栏添加新的操作和一个分隔符。 4. 添加自定义控件:使用addWidget()函数将自定义控件添加到工具栏。例如:QPushButton *btn = new QPushButton("aa", this); toolbar->addWidget(btn);这将在工具栏中添加一个按钮。 综上所述,QDockWidget是一个浮动窗口,可以多个,而工具栏是可以有多个,并且可以设置停靠区域和添加操作或自定义控件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Qt学习(2)菜单栏和工具栏等](https://blog.csdn.net/bareheadedman/article/details/104361888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值