QTreeWidget 用法整理& 信号与槽设置

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内的所有子页面
        }
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值