前言

前面一章介绍了ControlTabWidget ControlTreeWidget maintitlebar 三个子页面同时布局到 mainwindow 的方法,本章介绍如何将ControlTreeWidgetControlTabWidget 联动。

(一)TabWidget子页面实现

  1. 在maincontent 目录下创建 ota para tarnsmit telnet tester 五个目录,用来分别实现与ControlTabWidget的五个子页面。

    1. 使用添加UI的方式,添加 ota para tarnsmit telnet tester 五个类。

  2. 将刚刚创建的5个widget类添加到可提升的类中

  3. 将对应的页面提升为对应的类,这样就可以独立设计每个子页面了

  4. 第一页设置到前面,也就是打开显示在最上面的为第一页

  5. 添加一个 globaldef.hpp 全局文件,用来定义一些共用的结构体等信息

(二)ControlTabWidget 方法实现

  1. 创建一个 MapWidget 容器,将页面索引和页面指针关联起来
  2. 创建方法 initValue ,初始化的时候将各个页面信息填充到MapWidget 容器里
  3. 创建信号发送函数 sendShowIndex ,用来发送切换信号
  4. 创建槽函数 receiveShowCurrentTab,用来接收sendShowIndex 发送过来的信号,在该方法中,需要根据接收到的信号切换到对应的界面进行显示
#ifndef CONTROLTABWIDGET_H
#define CONTROLTABWIDGET_H #include <QWidget>
#include "globaldef.hpp"
namespace Ui {
class ControlTabWidget;
} typedef struct TabWidgetData
{
QWidget *currentWidget;
QString currentTabText;
}TabWidgetData; using MapWidget = QMap<WidgetTabType, TabWidgetData>; class ControlTabWidget : public QWidget
{
Q_OBJECT public:
explicit ControlTabWidget(QWidget *parent = 0);
~ControlTabWidget(); signals:
void sendShowIndex(WidgetTabType); private slots:
void receiveShowCurrentTab(WidgetTabType widgetTabType); private:
Ui::ControlTabWidget *ui;
void initValue(void);
MapWidget mapTabWidget;
}; #endif // CONTROLTABWIDGET_H

(三)ControlTreeWidget 方法实现

  1. initValue 进行样式的设置
  2. on_treeWidget_clicked 为按键事件处理槽函数
  3. sendShowIndex 添加发送信号方法
#ifndef CONTROLTREEWIDGET_H
#define CONTROLTREEWIDGET_H #include <QWidget>
#include "globaldef.hpp"
namespace Ui {
class ControlTreeWidget;
} class ControlTreeWidget : public QWidget
{
Q_OBJECT public:
explicit ControlTreeWidget(QWidget *parent = 0);
~ControlTreeWidget(); signals:
void sendShowIndex(WidgetTabType);
private slots:
void on_treeWidget_clicked(const QModelIndex &index); private:
Ui::ControlTreeWidget *ui;
void initValue();
}; #endif // CONTROLTREEWIDGET_H
  1. on_treeWidget_clicked 可以使用下面方式设置

    1. 在UI界面右键,选择转到槽函数
    2. 选择按键事件,OK,然后系统会自动创建该方法,我们只需要实现方法里面的内容就可以了。



(四) 将 ControlTabWidget 与 ControlTreeWidget 关联起来

  1. MainWindow 中创建 connect 连接
  2. widgetTree 的信号发送 sendShowIndex 方法 与widgetTab 的 receiveShowCurrentTab 信号接收槽函数相关联。
  3. 这样就可以实现点击treeWidget的选项,然后跳到对应的tabwidget界面
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->widgetTree, SIGNAL(sendShowIndex(WidgetTabType)), ui->widgetTab, SLOT(receiveShowCurrentTab(WidgetTabType)));
}
  1. 最终图像效果如下图:

总结

本章实现了ControlTreeWidgetControlTabWidget联动的功能,下面一章我们将介绍TileBar 功能的实现。

本章工程名为:page_sample_03.rar

完整工程下载地址,请到 liwen01 微信公众号中回复: QT 获取

---------------------------End---------------------------
长按识别二维码
关注 liwen01 公众号

Qt5.9 UI设计(五)——将Tabwidget与treeWidget相互关联的更多相关文章

  1. Qt5.9 UI设计(七)——统一样式设计

    前言 前面已经将UI设计部分实现,各页面也做了最简单的设计,本章介绍一下qss样式的使用.样式设计最终的显示效果如下图: 操作步骤 将stylesheet.qss 样式文件添加进工程 styleshe ...

  2. 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面

    [Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...

  3. 游戏UI框架设计(五): 配置管理与应用

    游戏UI框架设计(五) --配置管理与应用 在开发企业级游戏/VR/AR产品时候,我们总是希望可以总结出一些通用的技术体系,框架结构等,为简化我们的开发起到"四两拨千金"的作用.所 ...

  4. 五十个UI设计资源网站

    五十个UI设计资源网站 用户体验团队网站 1.UCD大社区 http://ucdchina.com/ 2.腾讯WSD http://wsd.tencent.com/ 3.腾讯CDC http://cd ...

  5. (2018干货系列五)最新UI设计学习路线整合

    怎么学UI全链路设计 全链路设计师是参与整个商业链条,为每个会影响用户体验的地方提供设计的可解决方案,最后既满足了商业目标,又提升了产品的用户体验和设计质量,与平面设计.UI设计彻底区分开来,是真正的 ...

  6. 缩放因子和UI设计

    一.PPI 1.像素密度PPI:PPI(Pixel Per Inch by diagonal):表示沿着对角线,每英寸所拥有的像素(Pixel)数目. 根据勾股定理(直角三角形两边为a和b,斜边为c, ...

  7. UI设计中px、pt、ppi、dpi、dp、sp之间的关系

    UI设计中px.pt.ppi.dpi.dp.sp之间的关系 武汉AAA数字艺术教育 2015-07-24 14:19:50 职业教育 pi px 阅读(3398) 评论(0) 声明:本文由入驻搜狐公众 ...

  8. 从Web借鉴UI设计

    从Web借鉴UI设计 用户体验已经成为衡量应用软件质量的重要标准.在过去我们可能会惊叹于某个Web应用的华丽界面,现在,随着HTML5的强势登场,各类表现层技术及开发框架的发布,Web与窗体应用的界限 ...

  9. UI设计(流程/界面)设计规范

    1.UI设计基本概念与流程 1.1 目的 规范公司UI设计流程,使UI设计师参与到产品设计整个环节中来,对产品的易用性进行全流程负责,使UI设计的流程规范化,保证UI设计流程的可操作性. 1.2范围  ...

  10. Android UI设计

    Android UI设计--PopupWindow显示位置设置 摘要: 当点击某个按钮并弹出PopupWindow时,PopupWindow左下角默认与按钮对齐,但是如果PopupWindow是下图的 ...

随机推荐

  1. Python——第二章:列表的概念

    在编程中,列表(List)是一种常用的数据结构,用于存储一组有序的元素.列表是Python中的内置数据类型之一,它允许你在一个变量中存储多个值,并且这些值可以是不同的数据类型,包括整数.浮点数.字符串 ...

  2. 技本功|数据安全之IDC数据容灾设计实现

    近年来,数据安全问题日渐受到大家的关注,对于任何一家企业,数据无疑是最重要的资产之一.提到数据容灾,大家可能会想到备库和备份的概念,那么我们先来谈谈备库与备份的区别. 备库与备份的区别 通常来讲,备库 ...

  3. just_audio音频播放器

    代码 import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; void main() ...

  4. 微信小程序常用代码

    在微信小程序中,可以使用 wx.showToast.wx.showLoading 和 wx.showModal 等方法来显示不同类型的提示框 wx.showToast:用于显示一条浮动的提示框,一般用 ...

  5. JVM学习-类加载机制

    文章原文:https://gaoyubo.cn/blogs/4b481fd7.html 一.类加载机制 在JVM学习-Class文件结构中,讲了Class文件存储格式的具体细节.虽然Class文件中描 ...

  6. 浅析AIGC for MMKG

    摘要:AIGC和多模态知识图谱(MMKG)中的知识获取又是怎么实现的呢?他们之间有什么关联呢? 本文分享自华为云社区<GPT-4发布,AIGC时代的多模态还能走多远?系列之四 AIGC for ...

  7. 实践案例丨CenterNet-Hourglass论文复现

    摘要:本案例是CenterNet-Hourglass论文复现的体验案例,此模型是对Objects as Points 中提出的CenterNet进行结果复现. 本文分享自华为云社区<Center ...

  8. 你眼中的程序员 VS 程序员眼中的自己,是时候打破代沟了

    摘要:修电脑?格子衫?脱发?程序员被误解了怎么办?如何一句话向父母说明白你的工作? 有人说,你们程序员工作赚钱真简单,电脑上按按键盘就行了,一点也不辛苦. 有人说,程序员不懂生活,就知道天天对着电脑. ...

  9. openGauss内核分析:执行计划生成

    摘要:SQL语句解析完成后被解析成Query结构,在进行优化时是以Query为单位进行的,Query的优化分为基于规则的逻辑优化(查询重写)和基于代价的物理优化(计划生成),主入口函数为subquer ...

  10. 输入的查询SQL语句,是如何执行的?

    摘要:输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程. 本文分享自华为云社区<一条查询SQL是如何执行的>,作者: 共饮一杯无 . 执行如下SQL,我们看到的只 ...