首页 > 其他分享 >Qt之分裂器(QSplitter)

Qt之分裂器(QSplitter)

时间:2023-10-27 10:46:50浏览次数:36  
标签:控件 分隔 Qt splitter QSplitter 分裂 addWidget new

一、QSplitter概述

QSplitter 是 Qt 中的一个布局管理器,允许用户在应用程序窗口中创建可拖动的分隔器,以便调整多个子窗口或控件的大小。它是一种非常有用的布局管理器,用于创建可分隔的多个部分,通常用于分割、重新排列和管理用户界面中的多个区域。

以下是有关 QSplitter 的详细介绍和使用方法:

QSplitter 的主要特点:

  1. 分隔多个控件:QSplitter 允许你在水平或垂直方向上分割窗口中的多个子部件或控件。

  2. 可拖动分隔器:用户可以通过拖动分隔器来动态调整子控件的大小,以满足他们的需求。

  3. 嵌套使用:你可以嵌套多个 QSplitter 以创建复杂的布局,允许用户在多个方向上进行分剔。

  4. 自动布局:QSplitter 处理子控件的自动布局,以确保它们占用可用空间。

二、函数介绍

1.setOrientation:设置分隔器的方向

QSplitter *splitter = new QSplitter;
splitter->setOrientation(Qt::Horizontal); // 设置为水平分隔器

2.setOpaqueResize:设置分隔器是否显示为不透明的样式

QSplitter *splitter = new QSplitter;
splitter->setOpaqueResize(true); // 设置为不透明分隔器

3.addWidget:将一个控件添加到分隔器中

QSplitter *splitter = new QSplitter;
QTextEdit *textEdit = new QTextEdit;
splitter->addWidget(textEdit);

4.setSizes:设置子控件的初始大小

QSplitter *splitter = new QSplitter;
splitter->setSizes(QList<int>() << 200 << 300); // 设置两个子控件的初始大小

5.sizes:获取子控件的当前大小

QSplitter *splitter = new QSplitter;
QList<int> sizes = splitter->sizes(); // 获取当前子控件的大小

6.handleWidth:获取分隔器的宽度

int width = QSplitter::handleWidth(); // 获取分隔器的宽度

7.refresh:重新布局和绘制分隔器

QSplitter *splitter = new QSplitter;
splitter->refresh(); // 重新布局和绘制分隔器

8.setCollapsible:设置是否允许子控件折叠

QSplitter *splitter = new QSplitter;
splitter->setCollapsible(0, true); // 允许第一个子控件折叠

三、代码示例  

#include "main_window.h"

#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QSplitter>
#include <QTextBrowser>

MainWindow::MainWindow(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("分裂器布局");
    this->setFixedSize(800, 600);

    //使用水平布局
    QHBoxLayout *pLayout = new QHBoxLayout(this);

    //使用水平分裂器
    QSplitter *pHSplitter = new QSplitter(Qt::Horizontal, this);
    pHSplitter->setSizes(QList<int>() << 10 << 30); // 设置两个子控件的初始大小

    QWidget *pLeftWidget = new QWidget(this);
    pLeftWidget->setStyleSheet("QWidget{background-color:rgb(255, 0, 0)}");
    pLeftWidget->setMinimumHeight(300);

    //分裂器添加widget
    pHSplitter->addWidget(pLeftWidget);

    //右边的垂直分裂器
    QSplitter *pVSplitter = new QSplitter(Qt::Vertical, pHSplitter);
    pVSplitter->setOpaqueResize(false);//手动到位并弹出鼠标之后再显示分割条

    QWidget *pRightWidget = new QWidget(this);
    pRightWidget->setStyleSheet("QWidget{background-color:rgb(255, 255, 0)}");

    QTextBrowser *pTextBrowser = new QTextBrowser(this);

    pVSplitter->addWidget(pRightWidget);
    pVSplitter->addWidget(pTextBrowser);

    //将右边的垂直分裂器加入到水平分裂器中
    pHSplitter->addWidget(pVSplitter);

    //将分裂器加入到水平布局中
    pLayout->addWidget(pHSplitter);
}

MainWindow::~MainWindow()
{
}

效果展示: 

标签:控件,分隔,Qt,splitter,QSplitter,分裂,addWidget,new
From: https://www.cnblogs.com/TechNomad/p/17791220.html

相关文章

  • Linux下安装Qt6的问题及解决
    Linux下安装完Qt6,新建Qt/QtQuickCMake工程编译出现如下错误:Foundpackageconfigurationfile:Qt6Config.cmakebutitsetQt6FOUNDtoFALSEsopackage"Qt6"isconsideredtobeNOTFOUND.Reasongivenbypackage:FailedtofindrequiredQtcomponen"Quick&......
  • Qt Creator常用快捷键及技巧提升编码效率
    转:https://blog.csdn.net/luoyayun361/article/details/105431913https://blog.csdn.net/u_topian/article/details/130366561https://blog.csdn.net/Zeek_0114/article/details/98938547代码编辑1.定义触发片段打开工具->选项->文本编辑器->片段,右侧点击添加2///三个斜杠......
  • qt 设置背景图片,图片出现锯齿
    qt给控件添加背景图片,通过有3种方式background-image;border-image;image其中通常用border-image;image。使用border-image,会出现图片失真,锯齿状严重ui->pushButton->setStyleSheet(“QPushButton{border-image:url(:/images/XXX.png);}”);使用image,会有边框,不适合qpushBu......
  • 通讯 --- C# .NET CORE MQTT 心跳服务
    转自:https://www.cnblogs.com/hkzw/p/17689443.htmlMQTT服务可以自行学习,这里只是记录一下写的结果,粘贴即用。首先引入包 MQTTnet,注意这个包这里的代码是4.0一下版本我用的3.1.2版本的4.以上是另外的写法,该内容中4不支持我 直接下降版本到3.1.2可以了。如果你一......
  • ASP.NET Core 使用 MQTTnet 实现 MQTT 通讯协议
    转自:https://www.twle.cn/t/19383MQTT是啥呢?MQTT,英文全称 MessageQueuingTelemetryTransport,是一种基于 发布/订阅 模式的轻量级的消息传输协议,由IBM公司出品。物联网兴起后,MQTT因为够轻量,低带宽和低延时而被推上浪潮之巅。其实,MQTT几乎就是专门为网络受限设备、低......
  • Qt开发之图形视图
    一、GraphicsView框架结构Qt的GraphicsView框架是一个用于2D图形渲染和交互的框架,它为开发者提供了一种灵活的方式来创建自定义的图形界面和场景。以下是QtGraphicsView框架的主要组件和结构分析:场景(Scene):QGraphicsScene是GraphicsView的核心概念之一。场景充当图形项(Item)的......
  • Qt开发之获取文件元数据的信息
    效果展示:源码如下:头文件(.h)#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QWidget>#include<QLabel>#include<QLineEdit>#include<QPushButton>#include<QCheckBox>#include<QHBoxLayout>#include<QVBoxLayout>......
  • mosquitto(MQTT)服务器搭建和基本使用
    一、安装搭建一个mqtt服务器,这里我们采用mosquitto1、下载地址:https://mosquitto.org/download/ 2、选择windows:https://mosquitto.org/files/binary/win64/mosquitto-2.0.18-install-windows-x64.exe 3、右键安装即可默认的安装路径在这里:C:\ProgramFiles\mosquitto......
  • MQTT:掉线重连 (Reconnect)
    cleansession对重连的影响在使用MQTT同步:#include"MQTTClient.h"时,若client与broker断开了连接,重连逻辑如何实现呢?其中cleansession对重连逻辑实现有什么影响呢?分别对cleansession的两种情况进行测试和验证。......
  • 迅为itop-3568开发板qt学习手册上新
     基于RK3568的QT教程他来了~从C++基础到QT编程实例再到项目实战,《iTOP-3568开发板QT学习手册》带你打通QT的任督二脉。  界面布局3.5.1水平布局lHorizontalLayout:水平方向布局,组件自动在水平方向上分布使用时先选中组件,然后点击水平布局即可完成,可看到组件变为水平排......