QDockWidget 浮动窗口

本文介绍了一个使用 Qt 实现的 DockWidget 示例程序。该程序通过 QMainWindow 构建了一个包含多个可移动 DockWidget 的界面,并展示了如何设置菜单栏、状态栏、工具栏及文件打开功能。
效果如下:
#include "mainwindow.h"
#include <QTextEdit>
#include <QDockWidget>
#include <QMenu>
#include <QAction>
#include <QMenuBar>
#include <QDebug>
#include <QFileDialog>
#include <QImage>
#include <QLabel>
#include <QPixmap>
#include <QStatusBar>
#include <QToolBar>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(1000, 800);
    QMenu *fileMenu = new QMenu("文件",this);
    QAction *openAct = new QAction("打开", this);
    fileMenu->addAction(openAct);
    connect(openAct, SIGNAL(triggered(bool)), this, SLOT(slotOpen()));
    menuBar()->addMenu(fileMenu);
    //状态栏
    QLabel *msgLabel = new QLabel;
    msgLabel->setStyleSheet(" QLabel{ color: red }");
    msgLabel->setText("Ready :");
    statusBar()->addPermanentWidget(msgLabel); //addWidget
    //工具栏  添加资源文件加入图片  响应再用connect连接槽
    QAction* openFile = new QAction(QIcon(":/ui/image/file.png"), tr("aaaa"), this);
    openFile->setToolTip("abcdeoghicd");
    QToolBar *toolBar = this->addToolBar("文件");
    toolBar->addAction(openFile);
    setWindowTitle("DockWidget Demo");
    QTextEdit *mainEdit = new QTextEdit(this);
    mainEdit->setAlignment(Qt::AlignCenter);
    mainEdit->setText("Main");
    setCentralWidget(mainEdit);
    QDockWidget * dock1 = new QDockWidget("DockWindow1",this);
    dock1->setFeatures(QDockWidget::DockWidgetMovable);
    dock1->setAllowedAreas( Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
    QTextEdit *edit1 = new QTextEdit();
    edit1->setText("window1, the dock widget can be moved ");
    dock1->setWidget(edit1);
    QDockWidget * dock2 = new QDockWidget("DockWindow2",this);
    dock2->setFeatures(QDockWidget::DockWidgetMovable| QDockWidget::DockWidgetClosable);
    dock2->setAllowedAreas( Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
    QTextEdit *edit2 = new QTextEdit();
    edit2->setText("window2, the dock widget can be moved ");
    dock2->setWidget(edit2);
    QDockWidget * dock3 = new QDockWidget("DockWindow3",this);
    dock3->setFeatures(QDockWidget::DockWidgetMovable| QDockWidget::DockWidgetClosable);
    dock3->setAllowedAreas( Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
    QTextEdit *edit3 = new QTextEdit();
    edit3->setText("window3, the dock widget can be moved ");
    dock3->setWidget(edit3);
    this->addDockWidget( Qt::BottomDockWidgetArea, dock1);
    this->addDockWidget( Qt::BottomDockWidgetArea, dock2);
    this->addDockWidget( Qt::BottomDockWidgetArea, dock3);
    tabifyDockWidget(dock1,dock2); //页签
    tabifyDockWidget(dock2, dock3);
    dock1->raise();//定位第一个标签
    QDockWidget * dock4 = new QDockWidget("DockWindow4",this);
    dock4->setFeatures(QDockWidget::DockWidgetMovable| QDockWidget::DockWidgetClosable);
    dock4->setAllowedAreas( Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
    QTextEdit *edit4 = new QTextEdit();
    edit4->setText("window4, the dock widget is sha bi");
    dock4->setWidget(edit4);
    QDockWidget * dock5 = new QDockWidget("DockWindow4",this);
    dock5->setFeatures(QDockWidget::DockWidgetMovable| QDockWidget::DockWidgetClosable);
    dock5->setAllowedAreas( Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
    QTextEdit *edit5 = new QTextEdit();
    edit5->setText("window5, the dock widget is great");
    dock5->setWidget(edit5);
    this->addDockWidget(Qt::RightDockWidgetArea, dock4);
    this->addDockWidget(Qt::RightDockWidgetArea, dock5);
}
void MainWindow::slotOpen()
{
    QString pathName;
    pathName = QFileDialog::getOpenFileName(this, "打开", "", "history(*.txt)");
    qDebug()<<"打开文件----------------------"<<pathName;
}
MainWindow::~MainWindow()
{
}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值