首页 > 其他分享 >Qt5.9 UI设计(五)——将Tabwidget与treeWidget相互关联

Qt5.9 UI设计(五)——将Tabwidget与treeWidget相互关联

时间:2023-04-16 15:57:47浏览次数:45  
标签:ControlTabWidget Qt5.9 void sendShowIndex QWidget UI ControlTreeWidget Tabwidget

前言

前面一章介绍了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 公众号

标签:ControlTabWidget,Qt5.9,void,sendShowIndex,QWidget,UI,ControlTreeWidget,Tabwidget
From: https://www.cnblogs.com/liwen01/p/17323350.html

相关文章

  • Qt5.9 UI设计(六)——TitleBar功能实现
    前言上一章介绍了ControlTreeWidget与ControlTabWidget联动的功能,这一章我们将实现自定义TitleBar的功能操作步骤修改按键图标最大和最小值右键按键图标,转到对应的槽函数中去对应的槽函数的实现如下:voidMainTitleBar::on_pushButtonMin_clicked(){if(pa......
  • Qt5.9 UI设计(七)——统一样式设计
    前言前面已经将UI设计部分实现,各页面也做了最简单的设计,本章介绍一下qss样式的使用。样式设计最终的显示效果如下图:操作步骤将stylesheet.qss样式文件添加进工程stylesheet.qss内容如下:/**********************MainWindowStyleSheet*******************/QMainWind......
  • Qt5.9 UI设计(一)——在win10系统上安装Qt5.9
    安装环境win10系统Qt5.9.0版本官方下载地址可以从官方网站获取:https://www.qt.io/zh-cn/现在的安装包跟以前的有些区别,加上网络比较慢,我这里演示的是Qt5.9.0版本的安装安装步骤直接双击qt-opensource-windows-x86-5.9.0.exe进行安装欢迎界面,直接点下一步登陆Qt账......
  • abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)
     Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解决方案介绍(二)abp(netcore)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(netcore)+e......
  • uni-app:input的样式调整(hbuilderx 3.7.3)
    一,js代码:<template><view><inputclass="inputText"style="width:700rpx;height:76rpx;"v-model="mobile"placeholder="请输入手机号"></input>&l......
  • [MAUI]模仿微信“按住-说话”的交互实现
    @目录创建页面布局创建手势控件创建TalkBox创建动画拖拽物动画按钮激活动画TalkBox动画Layout动画项目地址.NETMAUI跨平台框架包含了识别平移手势的功能,在之前的博文[MAUI项目实战]手势控制音乐播放器(二):手势交互中利用此功能实现了pan-pit拖拽系统。简单来说就是拖拽物(pan......
  • Matlab:GUI基础
    GUI坐标轴只显示白色图框 ......
  • [oeasy]python00134_[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum
    python历史回忆上次内容颜文字是kaomoji把字符变成一种图画的方法一层叠一层很多好玩儿的kaomoji是一层层堆叠起来的meme虚拟的表情也在真实世界有巨大影响一步步地影响字符编码就是这样一步步发展过来的python也是一步步发展到今天的python究竟是怎么发展的呢?......
  • Calibre GUI PV 流程介绍(0.8um BCD Process )
    Calibre规则名词解释设计规则检查:DesignRuleCheck,DRC版图&原理图一致性检查:LayoutVersusSchematics,LVS天线效应检查:Antennaeffect,ANT电学规则检查:ElectricalRuleChecking,ERC寄生参数提取:LayoutParameterExtraction,LPE注意1:需要加的CDL文件cdl器件文件放到网......
  • [oeasy]python00134_[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum
    python历史回忆上次内容颜文字是kaomoji把字符变成一种图画的方法一层叠一层很多好玩儿的kaomoji是一层层堆叠起来的meme ​ 添加图片注释,不超过140字(可选) 虚拟的表情也在真实世界有巨大影响一步步地影响 ​......