首页 > 系统相关 >Windows图形界面(GUI)-QT-C/C++ - Qt QToolBox详解教程

Windows图形界面(GUI)-QT-C/C++ - Qt QToolBox详解教程

时间:2025-01-19 12:58:20浏览次数:3  
标签:Qt Windows QVBoxLayout 图形界面 QWidget QToolBox new toolbox 页面

目录

QToolBox基础概述

QToolBox简介

使用场景

QToolBox常见样式

选项卡式界面

页面内容

动态管理页面

QToolBox属性设置

添加和删除页面

页面标题

页面索引

QToolBox内容操作

添加页面

插入页面

删除页面

设置和获取页面标题

设置和获取当前页面

QToolBox示例代码

创建一个简单的 QToolBox

动态添加内容到页面

动态管理 QToolBox 页面

QToolBox综合示例

实现代码


QToolBox基础概述

QToolBox简介

QToolBox 是 Qt 提供的一个多页面控件容器,用于在一个窗口中组织和显示多个页面。

每个页面可以包含不同的控件和内容,用户通过点击选项卡切换页面,从而在有限的屏幕空间内高效展示多个功能或信息组。

使用场景

QToolBox 常用于以下场景:

  1. 分组功能展示:在一个窗口中展示多个功能模块,例如设置选项、工具面板等。
  2. 信息分区:将相关信息分组展示,用户可以按需切换查看。
  3. 节省屏幕空间:在有限的界面中组织多个页面,保持界面的整洁和有序。

QToolBox常见样式

选项卡式界面

  • QToolBox 提供一个选项卡式的界面,每个选项卡代表一个页面。
  • 用户可以通过点击选项卡标题切换不同页面。

页面内容

  • 每个页面可以容纳不同的控件和内容,例如按钮、表格、文本框等。
  • 页面内容可以动态添加或修改。

动态管理页面

  • 可以动态添加、删除或修改页面及其标题。
  • 支持设置当前显示的页面。

QToolBox属性设置

添加和删除页面

添加页面

toolbox->addItem(new QWidget(), "Page 1");

删除页面

toolbox->removeItem(0);

页面标题

设置页面标题

toolbox->setItemText(0, "New Title");  

获取页面标题

QString title = toolbox->itemText(0);

页面索引

获取当前页面索引

int currentIndex = toolbox->currentIndex();

设置当前页面索引

toolbox->setCurrentIndex(1);

QToolBox内容操作

添加页面

addItem 方法用于向 QToolBox 添加新页面。

QWidget *page1 = new QWidget();  
toolbox->addItem(page1, "Page 1");

插入页面

insertItem 方法用于在指定位置插入一个页面。

QWidget *page2 = new QWidget();  
toolbox->insertItem(1, page2, "Page 2");

删除页面

removeItem 方法用于删除指定位置的页面。

toolbox->removeItem(0); // 删除索引为 0 的页面

设置和获取页面标题

toolbox->setItemText(0, "New Title"); // 设置标题  
QString title = toolbox->itemText(0); // 获取标题

设置和获取当前页面

toolbox->setCurrentIndex(1); // 切换到索引为 1 的页面  
int index = toolbox->currentIndex(); // 获取当前页面索引

QToolBox示例代码

创建一个简单的 QToolBox

QToolBox *toolbox = new QToolBox(this);  

// 添加页面1  
QWidget *page1 = new QWidget();  
QVBoxLayout *layout1 = new QVBoxLayout(page1);  
layout1->addWidget(new QLabel("This is Page 1"));  
toolbox->addItem(page1, "Page 1");  

// 添加页面2  
QWidget *page2 = new QWidget();  
QVBoxLayout *layout2 = new QVBoxLayout(page2);  
layout2->addWidget(new QLabel("This is Page 2"));  
toolbox->addItem(page2, "Page 2");  

// 设置布局  
QVBoxLayout *mainLayout = new QVBoxLayout(this);  
mainLayout->addWidget(toolbox);

动态添加内容到页面

void MainWindow::addItemToPage(QListWidget *listWidget)  
{  
    // 弹出输入框让用户输入内容  
    bool ok;  
    QString text = QInputDialog::getText(this, "Add Item", "Enter item name:", QLineEdit::Normal, "", &ok);  
    if (ok && !text.isEmpty()) {  
        // 添加到列表  
        listWidget->addItem(new QListWidgetItem(QIcon(":/icons/icon.png"), text));  
    }  
}

connect(ui->addButton, &QPushButton::clicked, this, [this]() {  
    addItemToPage(ui->listWidget);  
});  

动态管理 QToolBox 页面

void MainWindow::addPageToToolBox()  
{  
    QWidget *newPage = new QWidget();  
    QVBoxLayout *layout = new QVBoxLayout(newPage);  
    layout->addWidget(new QLabel("New Page Content"));  
    ui->toolBox->addItem(newPage, "New Page");  
}  

void MainWindow::removeCurrentPage()  
{  
    int currentIndex = ui->toolBox->currentIndex();  
    if (currentIndex != -1) {  
        ui->toolBox->removeItem(currentIndex);  
    }  
}

connect(ui->addPageButton, &QPushButton::clicked, this, &MainWindow::addPageToToolBox);  
connect(ui->removePageButton, &QPushButton::clicked, this, &MainWindow::removeCurrentPage);

QToolBox综合示例

实现代码

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

        // 创建工具箱
        QToolBox *toolBox = new QToolBox(this);
        toolBox->move(300, 300);
        toolBox->resize(500, 300);

        // 添加初始页面
        QWidget *page1 = new QWidget();
        QVBoxLayout *layout1 = new QVBoxLayout(page1);
        layout1->addWidget(new QLabel("This is the first page."));
        toolBox->addItem(page1, "Page 1");

        // 添加页面管理按钮
        QPushButton *addPageButton = new QPushButton("Add Page", this);
        addPageButton->move(0, 10);

        QPushButton *removePageButton = new QPushButton("Remove Page", this);
        removePageButton->move(0,50);

        connect(addPageButton, &QPushButton::clicked, this, [=]() {
            QWidget *newPage = new QWidget();
            QVBoxLayout *layout = new QVBoxLayout(newPage);
            layout->addWidget(new QLabel("New Page Content"));
            toolBox->addItem(newPage, QString("Page %1").arg(toolBox->count() + 1));
        });

        connect(removePageButton, &QPushButton::clicked, this, [=]() {
            int currentIndex = toolBox->currentIndex();
            if (currentIndex != -1) {
                toolBox->removeItem(currentIndex);
            }
        });

        // 主布局
        QVBoxLayout *mainLayout = new QVBoxLayout(this);
        mainLayout->addWidget(toolBox);
        mainLayout->addWidget(addPageButton);
        mainLayout->addWidget(removePageButton);

}

标签:Qt,Windows,QVBoxLayout,图形界面,QWidget,QToolBox,new,toolbox,页面
From: https://blog.csdn.net/2301_80612536/article/details/145241646

相关文章

  • Windows图形界面(GUI)-QT-C/C++ - Qt QGroupBox详解教程
    公开视频-> 链接点击跳转公开课程博客首页-> ​​​链接点击跳转博客主页目录QGroupBox基础概念QGroupBox简介使用场景QGroupBox常见样式框架和标题可启用/禁用扁平化样式QGroupBox属性设置标题​编辑对齐方式启用状态​编辑扁平化样式QGroupBox的内容操作......
  • windows 将docker desktop上镜像打包并通过资源管理器找到使用
    在Windows上使用DockerDesktop时,可以通过以下步骤将Docker镜像保存为 .tar 文件,并通过资源管理器找到该文件: 步骤1:打开DockerDesktop确保DockerDesktop正在运行。如果未运行,请启动它。步骤2:打开PowerShell或命令提示符按 Win+S,搜索 PowerShell ......
  • Windows资源管理器Icon图标注入
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。简介使用图标将DLL注入资源管理器的非正统和隐蔽方式IconJector这是一个Windows资源管理器DLL注入技术,使用Windows上的更改图标对话框。它......
  • 【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件
    ......
  • windows安装ffmpeg
    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。ffmpeg安装打开FFmpeg官网,选择下载。选择Windows平台,下面有两个链接,都是可以的,选择其一。本文以点击第一个链接......
  • manage-bde 是一个用于管理 BitLocker 驱动器加密的命令行工具,广泛应用于 Windows 操
    manage-bde|MicrosoftLearn manage-bde命令按功能进行分类,并以表格形式呈现的结果:功能分类命令描述基本命令manage-bde启动 manage-bde 命令行工具,显示相关帮助信息。查看加密状态manage-bdestatus显示所有驱动器的BitLocker加密状态,包括是否启用、......
  • windows hyper-v 虚拟机 虚拟磁盘链无法访问 父级虚拟硬盘的标识符和差异磁盘的标识符
    参考链接:修复链断裂的虚拟磁盘-知乎报错信息:试了很多方法没有找到合适的方案,  上图中的编辑按钮是灰色,解决方法,点击浏览,随便选一个可选项,选中后,编辑按钮就可用了 然后点击浏览,再把原来的虚拟硬盘重新选回来,这时候,你会发现编辑已经可用了,这个是有点气人,我前面看文章看......
  • Hyper-v中ubuntu与windows文件共享
    绝大部分内容来源于链接:Hyper-v中ubuntu与windows文件共享_hyper-vubuntu共享文件夹-CSDN博客Samba§官网:https://www.samba.org/Samba是Linux上在局域网共享文件的服务。1、更新源sudoaptupdate2、安装指定依赖sudoaptinstallsambasamba-commonsamba-common......
  • 快速部署WSL(Windows Subsystem for Linux)
    概述WindowsSubsystemforLinux(WSL)是微软为Windows10及更高版本推出的一项功能,允许用户在Windows上运行Linux二进制可执行文件。WSL提供了一个完全兼容的Linux内核接口,使用户能够在不使用虚拟机或双启动的情况下运行Linux环境。本文将详细介绍如何快速部署WSL,包括安装、配置和......
  • 使用 PowerShell 脚本监控特定 IP 地址频繁登录 Windows 服务器,您可以检查安全日志,特
    使用PowerShell脚本监控特定IP地址频繁登录Windows服务器,您可以检查安全日志,特别是事件ID4625(登录失败)和事件ID4624(成功登录)。通过分析这些日志,您可以找出哪些IP地址尝试过频繁的登录,并进行进一步的处理或警告。以下是一个PowerShell脚本示例,监控并记录频繁登录失......