普通网站可以做商城/比百度好用的搜索软件
切换风格的写法:
先看看样式效果:
mian_window.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();void InitMenu();void InitToolBar();
private:void SetStyleSheetToolBar();void InitFile();
private:QTabWidget *toolTablWidget_ {nullptr};
};
#endif // MAINWINDOW_H
cpp 文件
#include "mainwindow.h"#include <QApplication>
#include <QMainWindow>
#include <QTabWidget>
#include <QVBoxLayout>
#include <QWidget>
#include <QLabel>
#include <QStackedWidget>
#include <QScreen>
#include <QGuiApplication>
#include <QMenuBar>
#include "file_widget.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{// 创建中央窗口部件QWidget *centralWidget = new QWidget(this);setCentralWidget(centralWidget);InitToolBar();InitMenu();// 设置布局QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget);mainLayout->addWidget(toolTablWidget_);mainLayout->addWidget(new QWidget);mainLayout->addStretch();centralWidget->setLayout(mainLayout);// 设置窗口标题setWindowTitle("默认选项卡的 QMainWindow");
}MainWindow::~MainWindow() {}void MainWindow::InitMenu()
{// 创建菜单栏QMenuBar *menuBar = new QMenuBar(this);setMenuBar(menuBar);// 添加“文件”菜单QMenu *fileMenu = new QMenu("文件", this);menuBar->addMenu(fileMenu);fileMenu->addAction("新建");fileMenu->addAction("打开");fileMenu->addAction("保存");fileMenu->addSeparator();QAction *exitAction = fileMenu->addAction("退出");connect(exitAction, &QAction::triggered, this, &QMainWindow::close);// 添加“视图”菜单QMenu *viewMenu = new QMenu("视图", this);menuBar->addMenu(viewMenu);viewMenu->addAction("放大");viewMenu->addAction("缩小");// 添加“帮助”菜单QMenu *helpMenu = new QMenu("帮助", this);menuBar->addMenu(helpMenu);helpMenu->addAction("关于");helpMenu->addAction("帮助");
}void MainWindow::InitToolBar()
{// 获取屏幕高度QScreen *screen = QGuiApplication::primaryScreen();int screenHeight = screen->size().height();int tabWidgetHeight = screenHeight / 7; // 设置 tabWidget 高度为屏幕高度的八分之一// 创建 QTabWidgettoolTablWidget_ = new QTabWidget(this);toolTablWidget_->setFixedHeight(tabWidgetHeight);SetStyleSheetToolBar();// 添加选项卡到 QTabWidget,并设置文本toolTablWidget_->addTab(new QWidget(), "选项卡 1");toolTablWidget_->addTab(new QWidget(), "选项卡 2");toolTablWidget_->addTab(new QWidget(), "选项卡 3");toolTablWidget_->addTab(new QWidget(), "选项卡 4");toolTablWidget_->addTab(new QWidget(), "选项卡 5");InitFile();
}void MainWindow::SetStyleSheetToolBar()
{QString styleSheet = R"(QMainWindow {background-color: #f0f0f0; /* 设置背景颜色为浅灰色 */
}QTabWidget::pane {border: none;background: transparent;
}QTabBar::tab {background: rgba(255, 255, 255, 180); /* 半透明背景 */width: 120px; /* 设置页签宽度为120px */height: 22px;margin-right: 5px; /* 页签之间的间距 */margin-bottom: 10px; /* 页签与页面之间的距离 */
}QTabBar::tab:selected {background: rgba(255, 255, 200, 0); /* 选中的页签背景为不透明白色 */
}QTabWidget > QWidget > QWidget {border: none;border-right: 0px solid gray; /* 右边框 */border-bottom: 0px solid gray; /* 下边框 */border-radius: 16px 16px 16px 16px; /* 下方圆角 */background: rgba(255, 255, 255, 255); /* 半透明背景 */margin-top: 0px; /* 将页面向上移动1像素,以隐藏面板边框 */
}QGroupBox {border: 1px solid #C0C0C0; /* 边框颜色 */border-radius: 10px; /* 设置圆角为5像素 */background: rgba(255, 255, 255, 180); /* 半透明背景 */padding: 5px; /* 内边距 */margin-bottom: 2px; /* 为了确保标题在外部下方居中 */margin-top: 0px; /* 为了确保标题在外部下方居中 */
}QGroupBox::title {subcontrol-origin: padding;subcontrol-position: bottom center; /* 标题文字在下方居中 */padding: 0 10px;background: transparent;color: black;
})";this->setStyleSheet(styleSheet);
}void MainWindow::InitFile()
{PageFileWidget * pageFile = new PageFileWidget(toolTablWidget_->widget(0));pageFile->Init();
}
下面向日葵所在的分文件:
#ifndef FILE_WIDGET_H
#define FILE_WIDGET_H#include <QWidget>class PageFileWidget : public QWidget {Q_OBJECT
public:explicit PageFileWidget(QWidget *parent = nullptr);void Init();
private:void setupUI();
};#endif // FILE_WIDGET_H#include "file_widget.h"
#include <QGridLayout>
#include <QPushButton>
#include <QIcon>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QComboBox>
#include <QGroupBox>
#include <QToolButton>namespace {
const int TOOLBUTTON_WIDTH = 40;
const int TOOLBUTTON_HEIGHT = 40;
}
PageFileWidget::PageFileWidget(QWidget *parent) : QWidget(parent) {}void PageFileWidget::Init()
{setupUI();
}void PageFileWidget::setupUI() {QHBoxLayout *hbox = new QHBoxLayout(this);QGridLayout *gridLayout = new QGridLayout(this);// 设置边距(上下左右均为5px)gridLayout->setContentsMargins(1,1,1,1);QGridLayout *gridLayoutfile = new QGridLayout(this);gridLayoutfile->setContentsMargins(5, 5, 5, 5);QGroupBox *fileGroup = new QGroupBox("File", this);QGroupBox *fileConstruct = new QGroupBox("construct", this);// QString styleSheet = R"(// )";
// fileGroup->setStyleSheet(styleSheet);
// fileConstruct->setStyleSheet(styleSheet);// 添加按钮和标签,模拟 PowerPoint 界面QToolButton *button1 = new QToolButton(this);button1->setText("Button Text"); // 设置按钮的文字button1->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button1->setIconSize(QSize(TOOLBUTTON_WIDTH, TOOLBUTTON_HEIGHT)); // 设置图标的大小(可选)QToolButton *button2 = new QToolButton(this);button2->setText("Button Text"); // 设置按钮的文字button2->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button2->setIconSize(QSize(TOOLBUTTON_WIDTH, TOOLBUTTON_HEIGHT)); // 设置图标的大小(可选)QToolButton *button3 = new QToolButton(this);button3->setText("Button Text"); // 设置按钮的文字button3->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button3->setIconSize(QSize(TOOLBUTTON_WIDTH, TOOLBUTTON_HEIGHT)); // 设置图标的大小(可选)QToolButton *button4 = new QToolButton(this);button4->setText("Button Text"); // 设置按钮的文字button4->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button4->setIconSize(QSize(TOOLBUTTON_WIDTH, TOOLBUTTON_HEIGHT)); // 设置图标的大小(可选)QToolButton *button5 = new QToolButton(this);button5->setText("Button Text"); // 设置按钮的文字button5->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button5->setIconSize(QSize(TOOLBUTTON_WIDTH, TOOLBUTTON_HEIGHT)); // 设置图标的大小(可选)QToolButton *button6 = new QToolButton(this);button6->setText("Button Text"); // 设置按钮的文字button6->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button6->setIconSize(QSize(TOOLBUTTON_WIDTH, TOOLBUTTON_HEIGHT)); // 设置图标的大小(可选)QToolButton *button7 = new QToolButton(this);button7->setText("Button Text"); // 设置按钮的文字button7->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button7->setIconSize(QSize(32, 32)); // 设置图标的大小(可选)QToolButton *button8 = new QToolButton(this);button8->setText("Button Text"); // 设置按钮的文字button8->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button8->setIconSize(QSize(TOOLBUTTON_WIDTH, TOOLBUTTON_HEIGHT)); // 设置图标的大小(可选)QToolButton *button9 = new QToolButton(this);button9->setText("Button Text"); // 设置按钮的文字button9->setIcon(QIcon(":/icons/1.png")); // 设置按钮的图标button9->setIconSize(QSize(TOOLBUTTON_WIDTH, TOOLBUTTON_HEIGHT)); // 设置图标的大小(可选)gridLayout->addWidget(button1, 0, 0);gridLayout->addWidget(button2, 0, 1);gridLayout->addWidget(button3, 0, 2);gridLayout->addWidget(button4, 0, 3);gridLayoutfile->addWidget(button5, 0, 0);gridLayoutfile->addWidget(button6, 0, 1);gridLayoutfile->addWidget(button7, 1, 0);gridLayoutfile->addWidget(button8, 1, 1);gridLayoutfile->addWidget(button9, 1, 2);// 添加标签用于描述每一行的内容// QLabel *label1 = new QLabel("素材", this);// QLabel *label2 = new QLabel("一键美化", this);// 将标签添加到布局// gridLayout->addWidget(label1, 2, 1, 1, 2, Qt::AlignHCenter);// gridLayoutfile->addWidget(label2, 3, 1, 1, 2, Qt::AlignHCenter);fileGroup->setLayout(gridLayout);fileConstruct->setLayout(gridLayoutfile);hbox->addWidget(fileGroup);hbox->setSpacing(5);hbox->addWidget(fileConstruct);hbox->setSpacing(5);setLayout(hbox);
}
相关文章:

QT写一个mainWindow
切换风格的写法: 先看看样式效果: mian_window.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();void Ini…...

Java查找算法练习(2024.7.23)
顺序查找 package SearchExercise20240723; import java.util.Scanner; public class SearchExercise {public static void main(String[] args) {Scanner sc new Scanner(System.in);System.out.println("需要多大的数组?");int size sc.nextInt();int[] array …...

洗地机哪个牌子好?四款口碑最好的洗地机排名推荐
随着“懒人经济”的出现,越来越多的人开始使用洗地机。洗地机哪个牌子好?为了帮助大家在这个琳琅满目的市场中做出明智决策,本文特别整理了四款口碑最好的洗地机排名推荐,它们凭借出色的清洁效果、智能化的操作体验以及用户的高度…...

如何提升短视频的曝光量和获客效能?云微客来解决
在流量至上的当下,短视频凭借其优势,迅速成为了众多企业获客引流的核心营销手段。进入短视频赛道后,如何提升短视频的曝光量和获客效能,就成为了众多企业亟待解决的焦点。 如果你不想投入大量的广告预算,还想在短视频平…...

SpringBoot开发中如何缓存数据, 减少数据库的访问频率?
一:自定义是否开启缓存 方法一: 在不同环境的配置文件中如application-dev.yml、application-test.yml、application-prod.yml,修改 spring.cache.type none; spring:cache:type: none 方法二: 自定义配置 application.yml&…...

PostgreSQL如何在windows/linux开启归档
linux开启归档: archive_mode onarchive_command test ! -f /mnt/pg12/archivedir/%f && cp %p /mnt/pg12/archivedir/%fwindows开启归档: archive_mode onarchive_command copy "%p" "C:\\server\\pg12\\archivedir\\%f&q…...

【启明智显分享】基于国产Model3芯片的7寸触摸屏助力智慧医疗,电子床头屏提升护理交互
未来医院必然是以信息化为基础,以物联网为特征,以医疗为核心的服务型医院。病房作为医院的重要服务场所,成为智慧医院建设的重要一环。 为提高医护人员与患者的互动交流,给医疗注入智慧元素,让患者享受智能服务&#…...

从理论到实践:如何用 TDengine 打造完美数据模型
在用 TDengine 进行数据建模之前,我们需要回答两个关键问题:建模的目标用户是谁?他们的具体需求是什么?在一个典型的时序数据管理方案中,数据采集和数据应用是两个主要环节。如下图所示: 对于数据采集工程师…...

可以免费合并pdf的软件 合并pdf文件的软件免费 合并pdf的软件免费
在数字化办公的今天,pdf格式因其稳定性和跨平台兼容性被广泛使用。然而,当我们需要将多个 pdf 文件合并为一个时,却往往感到力不从心。本文将为你介绍几款强大的pdf文件合并软件,让你轻松管理文档。 方法一、使用pdf转换器 步骤1…...

【排序 滑动窗口 】1498. 满足条件的子序列数目
本文涉及至知识点 排序 C算法:滑动窗口总结 LeetCode1498. 满足条件的子序列数目 给你一个整数数组 nums 和一个整数 target 。 请你统计并返回 nums 中能满足其最小元素与最大元素的 和 小于或等于 target 的 非空 子序列的数目。 由于答案可能很大,…...

RabbitMQ普通集群搭建指南
RabbitMQ普通集群搭建指南 本文已经完全迁移至,www.geekery.cn 后续不在此更新 目标架构 本次搭建的目标是构建一个由三个节点组成的RabbitMQ集群,节点信息如下: rabbit02: IP地址 192.168.10.132rabbit03: IP地址 192.168.10.133rabbit04:…...

AGV平面坐标系变换公式及实例
1、AGV坐标系简介 如上图,小车前后对角是有激光雷达的,其坐标系称为激光坐标系,采用极坐标系体现。中间为车体坐标系,激光坐标系相对于车体坐标系关系不变;左下角是地图坐标系,小车扫图后,建立的…...

es切片和集群
解决单点故障 支持高并发 解决海量数据 1.cluster 集群:包含多个节点,每个节点属于哪个集群是通过一个集群名称(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就…...

IEEE官方列表会议 | 第三届能源与环境工程国际会议(CFEEE 2024)
会议简介 Brief Introduction 2024年第三届能源与环境工程国际会议(CFEEE 2024) 会议时间:2024年12月2日-4日 召开地点:澳大利亚凯恩斯 大会官网:CFEEE 2024-2024 International Conference on Frontiers of Energy and Environment Engineer…...

深度学习中的正则化技术 - Dropout篇
序言 在深度学习的浩瀚领域中,模型过拟合一直是研究者们面临的挑战之一。当模型在训练集上表现得近乎完美,却难以在未见过的数据(测试集)上保持同样优异的性能时,过拟合现象便悄然发生。为了有效缓解这一问题…...

《昇思 25 天学习打卡营第 18 天 | 扩散模型(Diffusion Models) 》
《昇思 25 天学习打卡营第 18 天 | 扩散模型(Diffusion Models) 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 扩散模型(Diffusion Models) 扩散模型概述 扩散模…...

【Django+Vue3 线上教育平台项目实战】Elasticsearch实战指南:从基础到构建课程搜索与数据同步接口
文章目录 前言一、Elasticsearch倒排索引 二、Docker 搭建 ESDocker 安装Docker 搭建 ES 三、ES基础语法创建索引查看索引删除索引添加数据查询数据修改数据删除数据条件查询分页查询排序 多条件查询andor 范围查询 四、ES在项目中的应用示例 前言 在数据驱动的时代,…...

libtins初探-抓包嗅探
libtin 一、概述1. 可移植性2. 特性 二、基础知识1. PDU2. 地址类3. 地址范围类4. 网络接口5. 写pcap文件 三、嗅探1.嗅探基础2. 嗅探器配置3. 循环嗅探4. 使用迭代器嗅探6. 包对象7. 读取pcap文件8. 包的解析 四、发送包1. 发送网络层pdu2. 发送链路层pdu3. 发送和接收响应校验…...

大语言模型-Bert-Bidirectional Encoder Representation from Transformers
一、背景信息: Bert是2018年10月由Google AI研究院提出的一种预训练模型。 主要用于自然语言处理(NLP)任务,特别是机器阅读理、文本分类、序列标注等任务。 BERT的网络架构使用的是多层Transformer结构,有效的解决了长…...

bug诞生记——动态库加载错乱导致程序执行异常
大纲 背景问题发生问题猜测和分析过程是不是编译了本工程中的其他代码是不是有缓存是不是编译了非本工程的文件是不是调用了其他可执行文件查看CMakefiles分析源码检查正在运行程序的动态库 解决方案 这个案例发生在我研究ROS 2的测试Demo时发生的。 整体现象是:修改…...

Matlab演示三维坐标系旋转
function showTwo3DCoordinateSystemsWithAngleDifference() clear all close all % 第一个三维坐标系 origin1 [0 0 0]; x_axis1 [1 0 0]; y_axis1 [0 1 0]; z_axis1 [0 0 1];% 绕 x 轴旋转 30 度的旋转矩阵 theta_x 30 * pi / 180; rotation_matrix_x [1 0 0; 0 cos(th…...

redis的持久化机制以及集群模式
1.redis的持久化机制 内存数据库具有高速读写的优势,但由于数据存储在内存中,一旦服务器停止或崩溃,所有数据将会丢失。持久化机制的引入旨在将内存中的数据持久化到磁盘上,从而在服务器重启后能够恢复数据,提供更好的…...

【论文解读】大模型算法发展
一、简要介绍 论文研究了自深度学习出现以来,预训练语言模型的算法的改进速度。使用Wikitext和Penn Treebank上超过200个语言模型评估的数据集(2012-2023年),论文发现达到设定性能阈值所需的计算大约每8个月减半一次,95%置信区间约为5到14个月…...

WebApi配置Swagger、Serilog、NewtonsoftJson、Sqlsugar、依赖注入框架Autofac、MD5加密
文章目录 项目准备1、创建WebApi项目配置Swagger、Serilog、NewtonsoftJsonNewtonsoftJsonSwaggerSerilog 使用ORM框架SqlSugar创建Service类库构成MVC框架使用AutoFac进行依赖注入 创建用户登录接口添加用户时进行安全防护 项目准备 1、创建WebApi项目 配置Swagger、Serilog…...

【ffmpeg命令基础】视频选项讲解
文章目录 前言设置输出文件的帧数设置每秒播放的帧数设置输出视频的帧率示例1:更改输出视频的帧率示例2:将图像序列转换为视频 设置输入视频的帧率示例3:处理高帧率视频示例4:处理低帧率视频 同时设置输入和输出帧率示例5…...

使用uniapp开发小程序(基础篇)
本文章只介绍微信小程序的开发流程,如果需要了解其他平台的开发的流程的话,后续根据情况更新相应的文章,也可以根据uniapp官网的链接了解不同平台的开发流程 HBuilderX使用:https://uniapp.dcloud.net.cn/quickstart-hx.html 开发工具 开始…...

vue3【详解】组合式函数
什么是组合式函数? 利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数,用于实现逻辑复用,类似 react18 中的 hook 函数名称 – 以 use 开头,采用驼峰命名,如 useTitle参数 – 建议使用 toValue() 处理(…...

微服务实战系列之玩转Docker(六)
前言 刚进入大暑,“清凉不肯来,烈日不肯暮”,空调开到晚,还是满身汗。——碎碎念 我们知道,仓库可见于不同领域,比如粮食仓库、数据仓库。在容器领域,自然也有镜像仓库(registry&…...

Python题解Leetcode Hot100之动态规划
动态规划解题步骤-5部曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到…...

你了解GD32 MCU上下电要求吗
你了解GD32 MCU的上下电要求吗?MCU的上下电对于系统的稳定运行非常重要。 以GD32F30X为例,上电/掉电复位波形如如下图所示。 上电过程中,VDD/VDDA电压上电爬坡,当电压高于VPOR(上电复位电压)MCU开始启动&a…...