QStackedWidget使用整理

ops/2024/10/21 10:18:08/

需求1做一个主窗口中有一个视频区域,平时放视频,特定条件下显示图片

stackWidget = new QStackedWidget((QWidget *)parent_);
            QWidget *w1,*w2;
            w1 = new QWidget();
            w1->setObjectName("video");
            w2 = new QWidget();
            w1->setObjectName("linemap");
            stackWidget->setObjectName("stackWidget");
            stackWidget->addWidget(w1);
            stackWidget->addWidget(w2);
            stackWidget->setGeometry(QRect(item->x(), item->y(), item->w(), item->h()));

第一个页面放视频,第二个页面显示图片

                lineMap = w2;
                Qt::WindowFlags flags = 0;//this->windowFlags();

                flags |= Qt::CustomizeWindowHint;
                flags |= Qt::FramelessWindowHint;
                lineMap->setWindowFlags(flags); //不是必需
                lineMap->setAutoFillBackground(true);//必需要加

设置QWidget显示背景图

    QPixmap pixmap(CONFIG->resource_path + QString("line%1.png").arg(id));
    QPalette palette;
    palette.setBrush(lineMap->backgroundRole(), QBrush(pixmap));
    lineMap->setPalette(palette);

需求2 全屏来回切换显示

    stackedWidget = new QStackedWidget(NULL);
    atsAWidget = new QWidget(NULL);
    atsBWidget = new QWidget(NULL);
    atsCWidget = new QWidget(NULL);
    stackedWidget->addWidget(atsAWidget);
    stackedWidget->addWidget(atsBWidget);
    stackedWidget->addWidget(atsCWidget);
    stackedWidget->setCurrentIndex(0);

    Qt::WindowFlags flags = 0;//this->windowFlags();
    flags |= Qt::CustomizeWindowHint;
    flags |= Qt::FramelessWindowHint;
    flags |= Qt::Window;

    atsAWidget->setWindowFlags(flags);
    atsBWidget->setWindowFlags(flags);
    atsCWidget->setWindowFlags(flags);

    atsAWidget->setGeometry(0,0,1920,1080);

    atsBWidget->setGeometry(0,0,1920,1080);

    atsCWidget->setGeometry(0,0,1920,1080);

    QVBoxLayout *layout = new QVBoxLayout();
    layout->addWidget(stackedWidget);
    this->setLayout(layout);
    stackedWidget->setObjectName("stackedWidget");
    atsAWidget->setObjectName("atsAWidget");
    atsBWidget->setObjectName("atsBWidget");
    atsCWidget->setObjectName("atsCWidget");
    atsAWidget->showFullScreen();//全屏显示,3个里只能选一个先,显示哪个,
到要切哪个页全屏时

        stackedWidget->setCurrentIndex(2);
        atsCWidget->showFullScreen();
实际效果感觉有明显的切换痕迹,不知如何优化


http://www.ppmy.cn/ops/101010.html

相关文章

PowerShell脚本编写:自动化Windows开发工作流程

在现代软件开发中,自动化已经成为提高效率和降低人为错误的重要手段之一。Windows开发者尤其依赖于自动化脚本来简化日常工作流程。PowerShell作为Windows的强大命令行工具和脚本语言,为开发者提供了丰富的功能和灵活性,使得多种开发和管理任…

Tomcat涡轮:企业级WEB动力引擎全解析

目录 一、WEB技术基础 1.1 HTTP协议和B/S结构 1.2 前端三大核心技术 二、WEB框架与资源访问 2.1 WEB资源和访问 2.2 后台应用架构 2.2.1 单体架构 2.2.2 微服务架构 2.2.3 单体架构和微服务比较 三、Tomcat的功能与安装 3.1 Tomcat简介 3.2 安装Tomcat ​编辑 3.…

2024安卓iOS免签封装源码/解决APP误报毒/可打包和上传APP/自动实现5分钟随机更换签名

源码简介: 2024全新安卓iOS免签封装源码,它可处理apk报毒,解决APP误报毒。不仅可打包APP,也可上传APK。自动实现5分钟随机更换包名和签名系统源码。 解决app误报毒,可打包APP可上传APK,并且自动实现5分钟…

SAP采购合同中不同有效期价格联动是何原因?

近期遇到采购同事的反馈,某个采购合同中有3条不同年度的价格记录,当更改第三条(最近一笔)价格的时候,发现第一条价格也跟着变了。但第二条价格并没有随之变化。 初步检查还发现一个特点,就是两条同步变化的…

docker compose用法详解

下面是每个 docker compose 配置参数的用法和示例: 全局选项用法示例 --ansi 控制何时打印 ANSI 控制字符。示例: docker compose --ansi never up 禁用 ANSI 控制字符的打印(颜色和格式)。 --compatibility 在向后兼容模式下运…

TypeScript为何需要定义比较复杂的泛型类型?

TypeScript 中需要定义复杂的泛型类型主要是为了增强代码的通用性、灵活性、可复用性和类型安全性。 首先,泛型可以创建可重复利用的组件。例如在处理不同类型的数据时,通过泛型可以编写通用的函数、类或接口,而不必为每种具体的数据类型单独…

苹果机器人计划:能否成为智能家居的破局者?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

第四章:照相机模型与增强现实

目录 1 针孔照相机模型 1.1 照相机矩阵 1.2 三维点的投影 1.3 照相机矩阵的分解 1.4 计算照相机中心 2 照相机标定 3 以平面和标记物进行姿态估计 4 增强现实 4.1 PyGame和PyOpenGL 4.2 从照相机矩阵到OpenGL格式 4.3 在图像中放置物体 1 针孔照相机模型 针孔照相机…