前言

前面一章介绍了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. 一个WPF版的Layui前端UI库

    前言 相信做.NET后端开发的很多小伙伴都用过Layui前端UI组件库,今天我们分享一个WPF版的Layui前端UI样式库:Layui-WPF. WPF介绍 WPF 是一个强大的桌面应用程序框架,用于 ...

  2. Python——第一章:占位——pass

    pass: 常用于代码占位 a = 10 if a > 100: pass 当设计代码时,有些条件或代码还没有想好要如何处理,先用pass做占位,后续可以回来继续写.如果不写pass则会报错,因 ...

  3. UE5:相机震动CameraShake源码分析

    本文将会分析UE5中相机震动的调用流程,会简要地分析UCameraModifier_CameraShake.UCameraShakeBase等相关类的调用过程. 阅读本文,你至少需要使用或者了解过Ca ...

  4. FreeMark模板基本知识

    FreeMarker模板基础知识 1.FreeMarker与jsp.Thymeleaf并排为三大模板引擎,用于把后端数据渲染到页面上,降低耦合度.动态数据+占位符+静态页面标签构成动态页面. 2.Fr ...

  5. 科技抗疫,少年可期,为这群有AI的天使开发者疯狂打call

    摘要:2020年初新冠突发,在这场抗疫的战斗中,让我们深刻体会到,疫情与每一个人息息相关.有这样一群来自华中科技大学的师生项目团队,他们利用AI技术,助力全球抗疫,他们是怎么做的呢?让我们一起来看看吧 ...

  6. maptalks点线面图形样式设置经验总结

    个人偏好使用mapbox,但是架不住人多,被使用maptalks,然而的文档非常感人,让人泪崩三千里-- maptalks图形样式设置,通过symbol设置 设置symbol的,可以直接在 图形(Ma ...

  7. Preload与Prefetch的区别以及webpack项目中如何优化

    preload 与prefetch 的区别 preload 是一个声明式 fetch,可以强制浏览器在不阻塞 document 的 onload 事件的情况下请求资源. preload 顾名思义就是一 ...

  8. Flask小知识集合

    全局变量g的使用 flask在上下文中提供了四种变量,分别是: 变量名 上下文 说明 current_app 应用上下文 当前激活程序的程序实例 g 应用上下文 处理请求时用作临时存储的对象.每次请求 ...

  9. 正确理解c# default关键字

    背景 最近QA测试一个我开发的一个Web API时,我意识到之前对C#的default的理解一直是想当然的.具体情况是这样,这个API在某些条件下要返回模型的默认值,写法类似于下面这样 [HttpGe ...

  10. 对于 CDN 的多元理解

    这是二狗子为数不多的创业故事. 那时二狗子还是一名高中生,学校是封闭式管理.由于二狗子总忍不住上课吃零食,他便每周一都会背着一麻袋零食来上学. 这上课吃零食行为,不知不觉诱惑到了周围的同学.大家纷纷向 ...