qt 无框dockwidget_Qt之停靠窗口QDockWidget类

这篇博客介绍了如何在Qt中使用QDockWidget创建可停靠、可关闭、可浮动的窗口。通过设置不同特性,可以实现停靠窗口在主窗口左侧、右侧、顶部或底部停靠,并能自由移动和独立浮动。详细步骤包括创建QDockWidget对象,设置其特性,插入QTextEdit控件,最后在主窗口中添加停靠窗口。
摘要由CSDN通过智能技术生成

Qt之停靠窗口QDockWidget类

设置停靠窗口的一般流程

1、创建一个QDockWidget对象的停靠窗口

2、设置此停靠窗体的属性,通常调用setFeatures()以及setAllowAreas()两种方法

3、新建一个要插入停靠窗口的控件,常用的有QListWidget和QTextEdit

4、将控件插入停靠窗口,调用QDockWidget的setWidget()方法

5、使用addDockWidget方法在MainWindow中加入此停靠窗口

步骤:

1、新建Qt GUI应用,项目名称DockWindows,基类选择"QMainWindow",类名选择"DockWindows",取消"创建界面"

2、修改DockWindows.h,DockWindows.cpp文件,在构造函数中实现窗口的初始化以及功能实现

DockWindows.h

#ifndef DOCKWINDOWS_H

#define DOCKWINDOWS_H

#include

class DockWindows : public QMainWindow

{

Q_OBJECT

public:

explicit DockWindows(QWidget *parent = 0);

~DockWindows();

};

#endif // DOCKWINDOWS_H

DockWindows.cpp

#include "dockwindows.h"

#include "ui_dockwindows.h"

#include

#include

DockWindows::DockWindows(QWidget *parent) :

QMainWindow(parent)

{

setWindowTitle(tr("windows")); //设置主窗口的标题栏文字

QTextEdit *te = new QTextEdit(this); //定义一个QTextEdit对象作为主窗口

te->setText(tr("Main Window"));

te->setAlignment(Qt::AlignCenter);

setCentralWidget(te); //将此编辑框设为主窗口的中央窗体

//停靠窗口1

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

dock->setFeatures(QDockWidget::DockWidgetMovable); //可移动

dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

//可以在主窗口的左/右边停靠

QTextEdit *te1 =new QTextEdit();

te1->setText(tr("Window1,The dock widget can be moved between docks by the user" ""));

dock->setWidget(te1);

addDockWidget(Qt::RightDockWidgetArea,dock);

//停靠窗口2

dock=new QDockWidget(tr("DockWindow2"),this);

dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); //可关闭、可浮动

// QDockWidget::NoDockWidgetFeatures //不可以关闭,不可以移动,不可以浮动

dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

//顶端停靠,底部停靠

QTextEdit *te2 =new QTextEdit();

te2->setText(tr("Window2,The dock widget can be detached from the main window,""and floated as an independent window, and can be closed"));

dock->setWidget(te2);

addDockWidget(Qt::RightDockWidgetArea,dock);

//停靠窗口3

dock=new QDockWidget(tr("DockWindow3"),this);

dock->setFeatures(QDockWidget::AllDockWidgetFeatures); //全部特性

QTextEdit *te3 =new QTextEdit();

te3->setText(tr("Window3,The dock widget can be closed, moved, and floated"));

dock->setWidget(te3);

addDockWidget(Qt::RightDockWidgetArea,dock);

}

DockWindows::~DockWindows()

{

}

---

书有每章书签。 -------- C++ GUI Programming with Qt 4 (second edition) by Jasmin Blanchette and Mark Summerfield. ISBN 0-13-235416-0 The root of the examples directory contains examples.pro. If you execute qmake examples.pro make (nmake if you use Visual C++), the examples for all chapters with complete cross-platform examples will be built. Note that chapters 11, 17, and 18 use code snippets rather than complete examples, so are not included here. The appendixC directory contains Qt Jambi examples. 1. Getting Started chap01/age chap01/hello chap01/quit 2. Creating Dialogs chap02/find chap02/gotocell1 chap02/gotocell2 chap02/gotocell3 chap02/sort 3. Creating Main Windows chap03/spreadsheet 4. Implementing Application Functionality chap04/spreadsheet 5. Creating Custom Widgets chap05/hexspinbox chap05/iconeditor chap05/iconeditorplugin chap05/plotter 6. Layout Management chap06/findfile1 chap06/findfile2 chap06/findfile3 chap06/mailclient chap06/mdieditor chap06/preferences chap06/splitter 7. Event Processing chap07/ticker 8. 2D Graphics chap08/cityscape chap08/diagram chap08/oventimer 9. Drag and Drop chap09/projectchooser 10. Item View Classes chap10/booleanparser chap10/cities chap10/colornames chap10/coordinatesetter chap10/currencies chap10/directoryviewer chap10/flowchartsymbolpicker chap10/settingsviewer chap10/teamleaders chap10/trackeditor 12. Input/Output chap12/imageconverter chap12/imagespace chap12/tidy 13. Databases chap13/scooters chap13/staffmanager 14. Multithreading chap14/imagepro chap14/semaphores chap14/threads chap14/waitconditions 15. Networking chap15/ftpget chap15
Qt框架中,DockWidget是一种可以浮动或嵌入主窗口内的小部件,常用于创建Windows应用程序的工具栏或面板。如果你想让DockWidget在主窗口中始终居中停靠,你可以通过设置DockWidget的一些属性来实现。 1. **创建DockWidget**: 首先,你需要创建一个DockWidget实例,并添加需要的内容: ```cpp QDockWidget *dock = new QDockWidget("我的小部件", parent); QWidget *content = new QWidget(this); // 设置内容... dock->setWidget(content); ``` 2. **设置停靠位置**: 然后,在初始化DockWidget时,你可以指定初始的停靠位置,如`Qt::Center`: ```cpp dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea | Qt::AllDockWidgetAreas); // 允许所有方向停靠 dock->setFeatures(dock->features() | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); // 开启移动和浮起功能 dock->setFloating(false); // 初始时不浮动 dock->setGeometry(QRect(parent->width() / 2 - dock->width() / 2, parent->height() / 2 - dock->height() / 2, dock->width(), dock->height())); // 中心位置 parent->addDockWidget(Qt::DockWidgetArea(Qt::Center), dock); // 添加到主窗口中央 ``` 这里设置了DockWidget可以在所有方向停靠,并将其设置为在屏幕中心位置。 **注意**: - 这种设置仅保证了DockWidget添加后的初始状态是居中的,如果用户手动拖动它,可能会离开中心位置。 - 如果希望始终保持居中,通常会结合信号槽机制监听DockWidget的位置变化,然后适时调整其位置回到中心。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值