用以实现一个停靠窗口的功能
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());
}