1. 添加根节点以及子节点
- 继承关系为:1#工厂—1#车间—1#产线—1#工位、2#工位
- 除了一级item在定义之时,就确定了是在文件treeWidget里;其他的二级,三级ite等,通过一级item的
->addchild()
操作来进行继承。
void frmMain::fucInitGbxTreeBar()
{
ui->treeWidget->setColumnCount(1); //设置列数
ui->treeWidget->setHeaderLabel(tr("工厂选择")); //设置头的标题
QTreeWidgetItem *imageItem1 = new QTreeWidgetItem(ui->treeWidget,QStringList(QString("1#工厂")));
imageItem1->setIcon(0,QIcon(GlobalVariable::gloPathFirstLevelMenu));
QTreeWidgetItem *item1_1 = new QTreeWidgetItem(imageItem1,QStringList(QString("1#车间")));
imageItem1_1->setIcon(0,QIcon(GlobalVariable::gloPathSecondLevelMenu));
imageItem1->addChild(imageItem1_1); //添加子节点
QTreeWidgetItem *imageItem1_1_1 = new QTreeWidgetItem(imageItem1_1,QStringList(QString("1#产线")));
imageItem1_1_1->setIcon(0,QIcon(GlobalVariable::gloPathThirdLevelMenu));
imageItem1_1->addChild(imageItem1_1_1); //添加子节点
QTreeWidgetItem *imageItem1_1_1_1 = new QTreeWidgetItem(imageItem1_1_1,QStringList(QString("1#工位")));
imageItem1_1_1_1->setIcon(0,QIcon(GlobalVariable::gloPathFourthLevelMenu));
imageItem1_1_1->addChild(imageItem1_1_1_1); //添加子节点
QTreeWidgetItem *imageItem1_1_1_2 = new QTreeWidgetItem(imageItem1_1_1,QStringList(QString("2#工位")));
imageItem1_1_1_2->setIcon(0,QIcon(GlobalVariable::gloPathFourthLevelMenu));
imageItem1_1_1->addChild(imageItem1_1_1_2); //添加子节点
}
2. 设置信号与槽
- 连接函数为:
connect(ui->treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(fucSlotTest1(QTreeWidgetItem*,int)));
treeWidget
为定义的QTreeWidgt 类名; 信号函数为固定样式;槽函数需要自定义,但是函数内部变量的样式需要和示例一样,如我自己定义的为void myslot(QTreeWidgetItem *, int)
;
funSlotTest1
函数实现- 继承关系为:1#工厂—1#车间—1#产线—1#工位、2#工位
void frmMain::fucSlotTest1(QTreeWidgetItem* in1,int in2)//虽然连接操作处没有写in1, in2等变量,但是这样是可行的
{
if(in1->parent())//此时传入的item是页面中被点击的item,可以判断其是否为根节点,即是否存在父类
{
if(in1->parent()->text(in2)=="1#产线" && in1->text(in2)=="1#工位")//根据其父类文件名以及自己的名字来判断是不是点击的某个操作。
{
fucCloseGbxAllSubFrm(ui->gbxMainBar);
frmTest1 *test1=new frmTest1(ui->gbxMainBar);
test1->move(0,0);
test1->show();
}
else if(in1->parent()->text(in2)=="1#产线" && in1->text(in2)=="2#工位")
{
fucCloseGbxAllSubFrm(ui->gbxMainBar);
frmTest2 *test2=new frmTest2(ui->gbxMainBar);
test2->move(0,0);
test2->show();
}
else
{
fucCloseGbxAllSubFrm(ui->gbxMainBar);//fucCloseGbxAllSubFrm方法为清除QGroupBox内的所有子页面
}
}
}