前言

前面一章介绍了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——Html(表格<table>, <tr>,<td>,<th>、表单<form>、自定义标签<div>和<span>)

    一.表格<table>, <tr>,<td>或<th> <table> 元素是 HTML 中用于创建表格的主要标记.表格是一种用于展示数据的 ...

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

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

  3. Android学习--ListView和Tab

    产生一个ListView 其中包含很多items,第一个item启动另一个实现了Tab的Activity. 关于tab的使用方式,参见下面blog http://oldshark.blog.163.c ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (61)-- 算法导论6.4 5题

    文心一言 VS 讯飞星火 VS chatgpt (61)-- 算法导论6.4 5题 五.证明:在所有元素都不同的情况下,HEAPSORT 的时间复杂度是 Ω (nlgn). 文心一言: 要证明在所有元 ...

  5. Langchain-Chatchat项目:1.1-ChatGLM2项目整体介绍

      ChatGLM2-6B是开源中英双语对话模型ChatGLM-6B的第2代版本,引入新的特性包括更长的上下文(基于FlashAttention技术,将基座模型的上下文长度由ChatGLM-6B的2K ...

  6. MindSpore实践:对篮球运动员目标的检测

    摘要:本文讲述的是MindSpore对篮球运动员目标的检测应用,通过AI技术辅助对篮球赛场进行分析. 本文分享自华为云社区<MindSpore大V博文系列:AI对篮球运动员目标的检测>,原 ...

  7. 数仓出现“wait in ccn queue”的时候,怎么迅速定位处理?

    摘要:现网在使用动态负载管理的时候,经常出现很多wait in ccn的情况,大家处理起来就会认为是hung住或者怎么着了,很着急,但wait ccn其实就是一个等待资源的状态,在此总结一个ccn问题 ...

  8. 深度克隆从C#/C/Java漫谈到JavaScript真复制

    如果只想看js,直接从JavaScript标题开始. 在C#里面,深度clone有System.ICloneable.创建现有实例相同的值创建类的新实例 克隆原理 值类型变量与引用类型变量 如果我们有 ...

  9. Solon2 开发之插件,一、插件

    Solon Plugin 是框架的核心接口,简称"插件".其本质是一个"生命周期"接口.它可让一个组件类参与程序的生命周期过程(这块看下:<应用启动过程与 ...

  10. 引用 AspNetCoreRateLimit => StatusCode cannot be set because the response has already started.

    app.UseIpRateLimiting(); #需要放在前面,否则抓去不准,还有可能会出现下列错误 本次出现这个错误,是因为  .Net Core 跨域 里面的这行:httpContext.Res ...