qt中QtreeWidget与QstackWidget关联的问题
来源:互联网 发布:闪电软件下载 编辑:程序博客网 时间:2024/06/05 16:20
目标:实现当点击QtreeWidget中的某个item的时候 切换stack的方法
过程:要做一个图书管理系统,主界面是类似于这样的
左边是类似于树形空间的东西,当点击左边的左边的窗体的时候,右边的窗口也会跟着切换。
为了实现这个功能,必须要有两个控件,QTreeWidget和QstackWidget;
以下是具体代码
1.Widge.h头文件
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include<QStackedWidget>#include<QTreeWidget>#include<QTreeWidgetItem>#include<QString>#include<QLabel>#include<QGridLayout>#include<QHBoxLayout>#include<QStringList>class Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = 0); ~Widget();private:QStackedWidget *stackWindow;QHBoxLayout *mainLayout;QTreeWidget *treeWidget;QTreeWidgetItem *parentItem1;QTreeWidgetItem *parentItem2;QTreeWidgetItem *childItem1;QTreeWidgetItem *childItem2;QLabel *parentLable1;QLabel *parentLable2;QLabel *childLable1;QLabel *childLable2;public slots:void change1(QTreeWidgetItem* item1,int count1);};#endif // WIDGET_H2.Widget.cpp具体的实现
#include "widget.h"#include<QObject>Widget::Widget(QWidget *parent) : QWidget(parent){ //connect(treeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(change1(QTreeWidgetItem*,int))); stackWindow =new QStackedWidget; mainLayout =new QHBoxLayout; treeWidget =new QTreeWidget(this); parentItem1=new QTreeWidgetItem(treeWidget,QStringList("parent1")); parentItem2=new QTreeWidgetItem(treeWidget,QStringList("parent2")); childItem1=new QTreeWidgetItem(parentItem1,QStringList("child1")); childItem2=new QTreeWidgetItem(parentItem2,QStringList("child2")); parentLable1=new QLabel("parentWindow1"); parentLable2=new QLabel("parentWindow2"); childLable1=new QLabel("childLable1"); childLable2=new QLabel("childLable2"); stackWindow->addWidget(parentLable1); stackWindow->addWidget(parentLable2); stackWindow->addWidget(childLable1); stackWindow->addWidget(childLable2); mainLayout->addWidget(treeWidget); mainLayout->addWidget(stackWindow); // stackWindow->setCurrentIndex(2); this->setLayout(mainLayout); //QObject::connect(treeWidget,SIGNAL(itemPressed(QTreeWidgetItem*,int)),this,SLOT(change1(QTreeWidgetItem* ,int )));//注释1 QObject::connect(treeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(change1(QTreeWidgetItem* ,int)));}Widget::~Widget(){}void Widget::change1(QTreeWidgetItem *item1, int count1){ QTreeWidgetItem *item=item1; if(item->text(count1)=="parent1") { stackWindow->setCurrentIndex(0); } else if(item->text(count1)=="parent2") { stackWindow->setCurrentIndex(1); } else if(item->text(count1)=="child1") { stackWindow->setCurrentIndex(2); } else if(item->text(count1)=="child2") { stackWindow->setCurrentIndex(3); }}
注释1:
这两个连接中的槽函数的参数只能给出类型,而不能给出形参名;
这两个连接必须写在窗口初始化之后
阅读全文
0 0
- qt中QtreeWidget与QstackWidget关联的问题
- Qt中QTreeWidget的使用
- qt QDockWidget QStackWidget的简单使用
- Qt堆栈窗口QStackWidget
- Qt信号与槽关联的问题
- QT学习笔记之QTreeWidget的增与删
- 设置QT中QTreeWidget的水平横向滚动条按需出现
- QT树型控件QTreeWidget中checkstate的使用
- [QT]QTreeWidget 的基本用法
- QT控件QTreeWidget的说明
- Qt QTreeWidget
- QT的QTreeWidget同时只展开一项
- Qt QTreeWidget的行间距设置
- Qt QTreeWidget(树形控件)的用法
- 使用Python+Qt时解决QTreeWidget中的内容超出边界后自动隐藏的问题
- Qt信号与槽的自动关联
- QT中对QTreeWidget使用stylesheet丰富显示效果
- QT中对QTreeWidget使用stylesheet丰富显示效果
- 设计模式——装饰器模式
- POJ1001
- IAR下库文件的生成及使用
- 前缀、中缀、后缀表达式
- CSS实现垂直居中的5种方法
- qt中QtreeWidget与QstackWidget关联的问题
- 字典映射到一个对象
- Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告
- Vue.js异步更新DOM策略及nextTick
- 在react组件中监控滚动
- [Jquery]设置表单元素不可用input disable
- 诡异的磁盘空间100%报警分析得出df -h与du -sh的根本性差别
- 控制反转
- 迭代器模式