欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C/C++ Qt Tree与Tab组件实现分页菜单功能

程序员文章站 2022-03-04 10:52:32
虽然treewidget组件可以实现多节点的增删改查,但多节点操作显然很麻烦,在一般的应用场景中基本上只使用一层结构即可解决大部分开发问题,treewidget组件通常可配合tabwidget组件,实...

虽然treewidget组件可以实现多节点的增删改查,但多节点操作显然很麻烦,在一般的应用场景中基本上只使用一层结构即可解决大部分开发问题,treewidget组件通常可配合tabwidget组件,实现一个类似于树形菜单栏的功能,当用户点击菜单栏中的选项时则会跳转到不同的页面上。

首先在qt的ui编辑界面左侧加入treewidget组件,右侧加入tabwidget组件,将页面中的tabwidget组件增加指定页,效果如下。

C/C++ Qt Tree与Tab组件实现分页菜单功能

mainwindow::mainwindow主函数中我们对其中的两个组件进行初始化操作。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qstylefactory>

mainwindow::mainwindow(qwidget *parent) :qmainwindow(parent),ui(new ui::mainwindow)
{
    ui->setupui(this);
    ui->treewidget->clear();

    ui->treewidget->setcolumncount(1);
    ui->treewidget->setheaderhidden(true);
    ui->tabwidget->tabbar()->hide();
    // 增加线条
    ui->treewidget->setstyle(qstylefactory::create("windows"));

// ----------------------------------------------------------
// by: lyshark
    // 创建 [系统设置] 父节点
    qtreewidgetitem *system_setup = new qtreewidgetitem(ui->treewidget,qstringlist(qstring("系统位置")));
    system_setup->setflags(qt::itemisselectable | qt::itemisusercheckable | qt::itemisenabled | qt::itemisautotristate);

    // 给父节点添加子节点
    qtreewidgetitem *system_setup_child_node_1 = new qtreewidgetitem(system_setup);
    system_setup_child_node_1->settext(0,"修改密码");
    qtreewidgetitem *system_setup_child_node_2 = new qtreewidgetitem(system_setup);
    system_setup_child_node_2->settext(0,"设置菜单");

// ----------------------------------------------------------
// https://www.cnblogs.com/lyshark
    // 创建 [页面布局] 父节点
    qtreewidgetitem *page_layout = new qtreewidgetitem(ui->treewidget,qstringlist(qstring("页面布局")));
    page_layout->setflags(qt::itemisselectable | qt::itemisusercheckable | qt::itemisenabled | qt::itemisautotristate);

    qtreewidgetitem *page_layout_clild_1 = new qtreewidgetitem(page_layout);
    page_layout_clild_1->settext(0,"页面配置");
    qtreewidgetitem *page_layout_clild_2 = new qtreewidgetitem(page_layout);
    page_layout_clild_2->settext(0,"页面参数");

    ui->treewidget->expandall();
}

mainwindow::~mainwindow()
{
    delete ui;
}

接着增加treewidget组件的右键点击事件,当右键点击节点时,先判断节点是哪一个,并自动将tabwidget组件切换到指定的页上。

// 当treewidget空间双击后根据不同的菜单项选择不同的tabview页
void mainwindow::on_treewidget_itemdoubleclicked(qtreewidgetitem *item, int column)
{
    qstring str = item->text(column);

    if(str == "修改密码")
    {
        ui->tabwidget->setcurrentindex(0);
    }
    if(str == "设置菜单")
    {
        ui->tabwidget->setcurrentindex(1);
    }
    if(str == "页面配置")
    {
        ui->tabwidget->setcurrentindex(2);
    }
    if(str == "页面参数")
    {
        ui->tabwidget->setcurrentindex(3);
    }
}

代码实现起来很简单,具体实现效果如下所示:

C/C++ Qt Tree与Tab组件实现分页菜单功能

文章出处:https://www.cnblogs.com/lyshark

到此这篇关于c/c++ qt tree与tab组件实现分页菜单的文章就介绍到这了,更多相关c/c++ qt tree与tab组件实现分页菜单内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!