QT-左框选项卡软件界面框架

QT-左框选项卡软件界面框架

  • 一、演示效果
  • 二、关键程序
  • 三、下载链接


一、演示效果

请添加图片描述

二、关键程序


#include <QTextBrowser>
#include <QLabel>
#include <QPushButton>
#include <QSpacerItem>
#include <QToolButton>
#include <QDebug>
#include <QStackedWidget>#include "settingsview.h"
#include "borderlayout.h"#include "ui_generalview.h"/*------------------------------------------------------------------------------* CTOR / DTOR*----------------------------------------------------------------------------*/
/*** @brief Create a instance of the settings widget** @param parent*/
SettingsView::SettingsView(QWidget *parent) :QWidget(parent),_stackedWidget(nullptr),_activeButton(nullptr)
{/* Create a layout for the sidebar */QWidget * sidebar = new QWidget();QVBoxLayout * sidebarLayout = new QVBoxLayout();_activeButton = createSidebarButton(":/icons/assets/settings.svg", tr("General"));_activeButton->setChecked(true);sidebarLayout->addWidget(_activeButton);sidebarLayout->addWidget(createSidebarButton(":/icons/assets/wifi.svg", tr("Network") ));sidebarLayout->addWidget(createSidebarButton(":/icons/assets/pictures.svg", tr("Slideshow") ));sidebarLayout->addWidget(createSidebarButton(":/icons/assets/tablet-locked.svg", tr("Privacy") ));sidebarLayout->addWidget(createSidebarButton(":/icons/assets/attachment.svg", tr("Advanced") ));sidebarLayout->addWidget(createSidebarButton(":/icons/assets/cloud.svg", tr("Storage") ));sidebarLayout->addSpacerItem(new QSpacerItem(0,0,QSizePolicy::Minimum, QSizePolicy::MinimumExpanding));sidebarLayout->setSpacing(0);sidebarLayout->setMargin(0);/* Add the sidebar layout to the sidebar widget container */sidebar->setLayout(sidebarLayout);sidebar->setObjectName("sidebar");sidebar->setMinimumHeight(sidebarLayout->count() * 76);/* Create the stacked widget */_stackedWidget = new QStackedWidget;/* Create the board layout */BorderLayout *layout = new BorderLayout();layout->addWidget(_stackedWidget, BorderLayout::Center);layout->addWidget(sidebar, BorderLayout::West);setLayout(layout);layout->setSpacing(0);setWindowTitle(tr("Settings"));setGeometry(0,0, 700, sidebar->minimumHeight());/* Create the first view */QWidget *widget = new QWidget;Ui::GeneralView ui;ui.setupUi(widget);push(widget);
}/*** @brief Free allocated memory*/
SettingsView::~SettingsView()
{delete _stackedWidget; _stackedWidget = nullptr;
}/*------------------------------------------------------------------------------**----------------------------------------------------------------------------*/
/*** @brief Slot to change the center widget** @param event True if touched and false if released.*/
void SettingsView::changeCenterWidget(bool event)
{Q_UNUSED(event);QString sender = QObject::sender()->objectName();if(_activeButton != nullptr) {_activeButton->setChecked(false);}_activeButton = static_cast<QToolButton*>(QObject::sender());_activeButton->setChecked(true);/* Remove all views from the stack if something is available */while(_stackedWidget->count() > 0){pop();}if(sender.compare("General") == 0) {QWidget *widget = new QWidget;Ui::GeneralView ui;ui.setupUi(widget);push(widget);}else if(sender.compare("Network") == 0) {QTextBrowser *widget = new QTextBrowser;widget->setText(tr("Network"));push(widget);}else if(sender.compare("Slideshow") == 0) {QTextBrowser *widget = new QTextBrowser;widget->setText(tr("Slideshow"));push(widget);}else if(sender.compare("Privacy") == 0) {QTextBrowser *widget = new QTextBrowser;widget->setText(tr("Privacy"));push(widget);}else if(sender.compare("Advanced") == 0) {QTextBrowser *widget = new QTextBrowser;widget->setText(tr("Advanced"));push(widget);}else if(sender.compare("Storage") == 0) {QTextBrowser *widget = new QTextBrowser;widget->setText(tr("Storage"));push(widget);}
}/*------------------------------------------------------------------------------**----------------------------------------------------------------------------*//*** @brief Create a button for the sidebar** @param iconPath Path to the icon* @param title Tile to display under the icon** @return A new instance of a button for the sidebar*/
QToolButton * SettingsView::createSidebarButton(const QString& iconPath, const QString& title)
{QIcon icon(iconPath);QToolButton * btn = new QToolButton;btn->setIcon(icon);btn->setIconSize(QSize(42, 42));btn->setText(title);btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);btn->setFixedSize(76, 76);btn->setObjectName(title);btn->setCheckable(true);QObject::connect(btn, SIGNAL(clicked(bool)),this, SLOT(changeCenterWidget(bool)));return btn;
}/*** @brief Push the widget on the stack and set it active** @param page Widget to push*/
void SettingsView::push(QWidget *page)
{_stackedWidget->addWidget(page);_stackedWidget->setCurrentWidget(page);
}/*** @brief Remove the current widget from the stack and switch to the previous*/
void SettingsView::pop()
{QWidget * currentWidget = _stackedWidget->currentWidget();_stackedWidget->removeWidget(currentWidget);delete currentWidget; currentWidget = nullptr;
}

三、下载链接

https://download.csdn.net/download/u013083044/89061910

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MyBatis】MyBatis的介绍和基本使用

目录 一、数据库操作框架的历程 1.1 JDBC 1.2 DBUtils 1.3 Hibernate 1.4 Spring JDBC&#xff1a;JDBCTemplate 1.5 Spring Data JPA 二、什么是MyBatis&#xff1f; 2.1 传统JDBC与MyBatis相比的弊病 2.2 MyBatis中的组件 2.3 MyBatis的体系结构 三、快速搭建MyBa…

Linux的中间件

我们先补充点关于awk的内容 awk的用法其实很广。 $0 表示整条记录 变量&#xff1a; NF 一行中有多少个字段&#xff08;表示字段数&#xff09; NR &#xff1a; 代表当前记录的序号&#xff0c;从1开始计数。每读取一条记录&#xff0c;NR的值就会自动增加1。&#xff08;…

鸿蒙TypeScript入门学习第5天:【TypeScript 运算符】

1、TypeScript 运算符 运算符用于执行程序代码运算&#xff0c;会针对一个以上操作数项目来进行运算。 考虑以下计算&#xff1a; 7 5 12复制以上实例中 7、5 和 12 是操作数。 运算符 用于加值。 运算符 用于赋值。 TypeScript 主要包含以下几种运算&#xff1a; 算…

NEO 学习之 MLE(最大似然估计)

文章目录 简单题目MLE 在不同的分布的运用正态分布指数分布均匀分布泊松分布 如何理解 最大似然估计&#xff1f; 就是我们先取出一堆样本&#xff0c;得到一个L( θ \theta θ) 函数&#xff0c;然后的话&#xff0c;这个是关于 θ \theta θ 的一个函数&#xff0c;那么由于存…

C++的入门学习

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一、C关键字(C98) 二、命名空间 2.1 引入 ​编辑2.2 命名空间定义 2.3 命名空间的使用 三. C输入&输出 四.缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 1.全缺省参数 2…

HTTP 协议的基本格式

一 HTTP是什么 超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff0c;HTTP&#xff09;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。 HTTP协议的主要特点包括&#xff1a; 无连…

七、Audio,Paper or Kindle:What‘s the best way to read a book?听书、纸书、电纸书,阅读方式该怎么选?

Whats the most effective way to read a book?Should you stick to paper books you can flip the pages, dog-ear and write notes in the margin?What about Kindle or other eReaders, which let you download new books instantly and cheaply?Is it okay to listen to…

经验分享:企微文档是什么?对企业有什么用处?

许多在企业单位工作的小伙伴应该都用过企业微信&#xff0c;这是一个专为企业打造的高效办公平台。然而&#xff0c;你是否了解其中的一个功能—企微文档呢&#xff1f;在这篇文章中&#xff0c;我将详细的解读一下企微文档是什么和它对企业的益处。 那么&#xff0c;什么是企微…

六、Django开发

六、Django开发 1.新建项目2.创建app2.1 第一种方法&#xff1a;2.2 利用pycharm中tools工具直接创建app 3.设计表结构&#xff08;django&#xff09;4.在MySQL中生成表5.静态文件管理6.部门管理6.1 部门列表 7.模板的继承8.用户管理8.1初识Form1.views.py2.user_add.html 8.2…

7_springboot_shiro_jwt_多端认证鉴权_自定义AuthenticationToken

1. 目标 ​ 本小节会先对Shiro的核心流程进行一次回顾&#xff0c;并进行梳理。然后会介绍如果应用是以API接口的方式提供给它方进行调用&#xff0c;那么在这种情况下如何使用Shiro框架来完成接口调用的认证和授权。 2. 核心架构 引用官方的架构图&#xff1a; 2.1 Subje…

go: go.mod file not found in current directory or any parent directory.如何解决?

这个错误表明你正在执行 go get 命令&#xff0c;但是当前目录或任何父目录中都找不到 go.mod 文件。这可能是因为你的项目还没有使用 Go Modules 进行管理。 要解决这个问题&#xff0c;有几种方法&#xff1a; go mod init <module-name> 其中 <module-name>…

第四篇:3.3 无效流量(Invalid traffic) - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象&#xff08;AD Impression&#xff09;第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 &#xff08;Viewability&#xff09;第四篇广…

Unix信号处理

信号的基本概念我已经在上一节中简单介绍了&#xff0c;大家可以去看我的上一篇博客&#xff1a; Unix中的进程和线程-2-CSDN博客 1.信号的产生 kill函数&#xff1a; #include <signal.h> #include <fcntl.h> #include<t_stdio.h> //自定义信号处理函数,n为…

云服务器8核32G配置报价大全,腾讯云、阿里云和京东云

8核32G云服务器租用优惠价格表&#xff0c;云服务器吧yunfuwuqiba.com整理阿里云8核32G服务器、腾讯云8核32G和京东云8C32G云主机配置报价&#xff0c;腾讯云和京东云是轻量应用服务器&#xff0c;阿里云是云服务器ECS&#xff1a; 阿里云8核32G服务器 阿里云8核32G服务器价格…

鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题

鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题 一、运行环境 1、硬件 手机型号&#xff1a;NOVA 7 系统&#xff1a;HarmonyOS版本 4.0.0 2、软件 android SDK platforms&#xff1a;14.0(API Level 34)、13.0&#xff08;API Level 33&#xff09; SDK Build-T…

CentOS系统下Docker的安装教程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

K8S之Secret的介绍和使用

Secret Secret的介绍Secret的使用通过环境变量引入Secret通过volume挂载Secret Secret的介绍 Secret是一种保护敏感数据的资源对象。例如&#xff1a;密码、token、秘钥等&#xff0c;而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使…

【Linux】TCP网络套接字编程+守护进程

文章目录 日志类&#xff08;完成TCP/UDP套接字常见连接过程中的日志打印&#xff09;单进程版本的服务器客户端通信多进程版本和多线程版本守护进程化的多线程服务器 日志类&#xff08;完成TCP/UDP套接字常见连接过程中的日志打印&#xff09; 为了让我们的代码更规范化&…

车载电子电器架构 —— 诊断数据库开发

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

Python 后端 Flask 使用 Flask-SocketIO、前端 Vue3 实现长连接 Websocket 通信详细教程(更新中)

Flask 安装 Flask-Socketio Flask-SocketIO 第三方库使 Flask 应用程序可以实现客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 Javascript、Python、C、Java 和 Swift 中的任何 SocketIO 客户端库或任何其他兼容客户端来建立与服务器的永久连接。 Flask-Socke…