QT-纯代码控件-QDockWdiget(停靠窗口)

it2022-05-05  214

用以实现一个停靠窗口的功能

1.新建一个无ui界面的工程,基类为widget或者mainwindow(我这里为mainwindow)

2.mainwindow.h和mainwindow.cpp中添加相关头文件

mainwindow.h

#include <QTextEdit> #include <QToolBar> #include <QMenuBar> ####

mainwindow.cpp

#include <QDockWidget> //添加停靠窗口 #include <QCalendarWidget> //日历控件

添加一个日历控件作为可拖拽的基础

3.代码实现

mainwindow.h

#include <QMainWindow> #include <QTextEdit> #include <QToolBar> #include <QMenuBar> class MainWindow : public QMainWindow { Q_OBJECT //添加组件、函数的定义 QTextEdit * textedit; QToolBar * viewtoolbar; QMenu * viewmenu; public: void creatDockWidget(); //实现停靠 public: MainWindow(QWidget *parent = 0); ~MainWindow(); };

mainwindow.cpp

#include "mainwindow.h" #include <QDockWidget> //添加停靠窗口 #include <QCalendarWidget> //日历控件 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { //创建一个qtextedit控件。作为主窗口 textedit = new QTextEdit ; this->setCentralWidget(textedit); viewmenu = menuBar()->addMenu(tr("视图")); //添加菜单 viewtoolbar = this->addToolBar(tr("日历")); //添加工具条 creatDockWidget(); //创建停靠窗口 this->setWindowTitle("停靠窗口"); } MainWindow::~MainWindow() { } //停靠函数 void MainWindow::creatDockWidget() { //设置主窗体的第一个QDockWidget QDockWidget * dock = new QDockWidget(this); //设置dock的可停靠区域,全部可停靠 dock->setAllowedAreas(Qt::AllDockWidgetAreas); //设置dock内的控件 QCalendarWidget * calendar = new QCalendarWidget; //将日历控件设置为dock的主控件 dock->setWidget(calendar); //向主窗体中添加doc的第一个参数,表示初始显示的位置——右边 //第二个参数是要添加的QDockWidget控件 this->addDockWidget(Qt::RightDockWidgetArea,dock); //设置窗口特性,设置停靠窗口可移动位置和可被关闭 dock->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable); //向菜单和工具栏中添加显示和隐藏dock窗口的动作 viewmenu->addAction(dock->toggleViewAction()); viewtoolbar->addAction(dock->toggleViewAction()); }

4.效果展示


最新回复(0)