zoukankan      html  css  js  c++  java
  • Qt布局管理: 停靠窗口QDockWidget类(纯代码实现)

    转载:好儿郎~志在四方

    详细描述:

    QDockWidget类提供了一个窗体部件,其可以停靠在QMainWindow,或其本身作为一个在桌面上的顶级窗口(也就是父窗体)。

    QDockWidget类提供了dock widget的概念,dock widget也就是我们熟悉的工具面板或者是工具窗口。

    Dock window是放置在QMainWindow窗口周围的dock widget区域中的小部件。

    图形描述如下:

    Dock windows可以在几个区域中移动,或者是悬浮。该类提供的API允许程序员限制dock widgets的移动,悬浮和关闭,以及它可以被放置的区域。

    成员类型:

    QDockWidget对象包含一些特性,例如:移动、悬浮、关闭等等,这些都是枚举类型。

    创建停靠窗体的流程:

    • 创建一个QDockWidget对象的停靠窗体。
    • 设置此停靠窗体的属性,通常可以使用setFeatures()以及setAllowedAreas()两种方法。
    • 新建一个要插入停靠窗体的控件,常用的有QListWidget和QtextEdit。
    • 将控件插入停靠窗体,调用QDockWidget()和setWidget()成员函数。
    • 使用addDockWidget()方法,在MainWindow中加入此停靠窗体。

    实例:

    • 窗口1可以在左边和右边移动;
    • 窗口2 没有相关的任何特性;
    • 窗口3具有相关的所有特性;

    步骤:

    1、新建GUI应用,项目名自定义,基类选择QMainWindow,注意要取消"创建界面"复选框。

    MainWindow类构造函数的说明:

    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
    };

    2、MainWindow.cpp文件,也就是MainWindow类构造函数的实现,代码如下:

    #include "mainwindow.h"
    #include <QTextEdit>
    #include <QDockWidget>
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        setWindowTitle(tr("DockWidget"));
        QTextEdit *text = new QTextEdit(this);
        text->setText(tr("主窗口"));
        text->setAlignment(Qt::AlignCenter);
        setCentralWidget(text);
    
        QDockWidget *dock = new QDockWidget(tr("DockWindow1"),this);
        dock->setFeatures(QDockWidget::DockWidgetMovable); //指定停靠窗体的样式,此处为可移动
        dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
        QTextEdit *text1 = new QTextEdit();
        text1->setText(tr("窗口一"));
        dock->setWidget(text1);
        addDockWidget(Qt::RightDockWidgetArea,dock);
    
        dock = new QDockWidget(tr("DockWindow2"),this);
        dock->setFeatures(QDockWidget::NoDockWidgetFeatures); //没有相关的权限
        QTextEdit *text2 = new QTextEdit();
        text2->setText(tr("窗口二"));
        dock->setWidget(text2);
        addDockWidget(Qt::RightDockWidgetArea,dock);
    
        dock = new QDockWidget(tr("DockWindow3"),this);
        dock->setFeatures(QDockWidget::AllDockWidgetFeatures); //具有全部特性
        QTextEdit *text3 = new QTextEdit();
        text3->setText(tr("窗口三"));
        dock->setWidget(text3);
        addDockWidget(Qt::RightDockWidgetArea,dock);
    
    }
    
    MainWindow::~MainWindow()
    {
    
    }

    3、主函数中的代码如下

    #include "mainwindow.h"
    #include <QApplication>
    #include <QFont>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QFont font("楷体",20,QFont::Bold);
        a.setFont(font);
    
        MainWindow w;
        w.show();
        w.setFixedSize(600,400);    //设置窗体为固定的大小,防止用户通过拖拽改变其大小
        return a.exec();
    }

    4、运行效果如下:

  • 相关阅读:
    Java代码实现WORD转PDF
    用Java实现在【520,1314】之间生成随机整数的故事
    solr 6.5.1 linux 环境安装
    并发编程学习笔记(15)----Executor框架的使用
    并发编程学习笔记(14)----ThreadPoolExecutor(线程池)的使用及原理
    并发编程学习笔记(13)----ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)原理
    并发编程学习笔记(12)----Fork/Join框架
    并发编程学习笔记(11)----FutureTask的使用及实现
    并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理
    服务器被植入木马,CPU飙升200%
  • 原文地址:https://www.cnblogs.com/fuqia/p/9154406.html
Copyright © 2011-2022 走看看