当前位置:   article > 正文

QTreeWidget中添加QTreeWidgetItem

qtreewidgetitem

记录一下QTreeWidget和QTreeWidgetItem在Qt中的应用,示例如下图所示

首先需要建立QTreeWidget对象

  1. QHBoxLayout *hLayout = new QHBoxLayout();
  2. QTreeWidget *CameraTree = new QTreeWidget(this);
  3. CameraTree->setColumnCount(2);//设置列
  4. CameraTree->setHeaderLabels(QStringList()<<"feature"<<"value");//设置标题
  5. hLayout->addWidget(CameraTree);

然后使用    QList<QTreeWidgetItem *> 类建立一个对象items,再使用QTreeWidgetItem建立first、second等等,想建立几个就建立几个,然后使用items.append(first)关联起来,最后使用 CameraTree->insertTopLevelItems(0, items)插入为顶端LevelItems

  1. QList<QTreeWidgetItem *> items;
  2. //items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("first"))));
  3. first = new QTreeWidgetItem;
  4. first->setText(0,"first");
  5. items.append(first);
  6. second = new QTreeWidgetItem; //添加第二个父节点
  7. second->setText(0, tr("second"));
  8. items.append(second);
  9. CameraTree->insertTopLevelItems(0, items);
  10. first->setHidden(false);//设置隐藏
  11. second->setHidden(false);//设置隐藏

再继续就可以给每一个添加进去的QTreeWidgetItem再添加控件或者child,使用first->addChild(item_ImageFormatControl)中addchild是父对象添加子对象函数,可以一直下去,不断添加...,CameraTree->setItemWidget(itemWidth, 1, spBoxckBoxWidget)中setItemWidget是在CameraTree添加的itemWidth对象中的第一列添加控控件(可以添加多个控件,效果图所示,代码如下)

  1. QCheckBox *ckBox = new QCheckBox;
  2. ckBox->setText("CheckBox");
  3. ckBox->setChecked(true);
  4. //ckBox->setFixedHeight(20);
  5. QSpinBox *spBox = new QSpinBox;
  6. //spBox->setFixedHeight(20);
  7. QHBoxLayout *spBoxckBoxHBoxLayout = new QHBoxLayout();
  8. spBoxckBoxHBoxLayout->addWidget(ckBox);
  9. spBoxckBoxHBoxLayout->addWidget(spBox);
  10. QWidget *spBoxckBoxWidget = new QWidget();
  11. spBoxckBoxWidget->setLayout(spBoxckBoxHBoxLayout);
  12. QTreeWidgetItem *item_ImageFormatControl = new QTreeWidgetItem;
  13. item_ImageFormatControl->setText(0, "Image Format Control");
  14. QTreeWidgetItem *item_AnalogControl = new QTreeWidgetItem;
  15. item_AnalogControl->setText(0,"Analog Control");
  16. QTreeWidgetItem *item_ImageQualityControl = new QTreeWidgetItem;
  17. item_ImageQualityControl->setText(0, "Image Quality Control");
  18. first->addChild(item_ImageFormatControl);
  19. first->addChild(item_AnalogControl);
  20. first->addChild(item_ImageQualityControl);
  21. QTreeWidgetItem *itemWidth = new QTreeWidgetItem;
  22. itemWidth->setText(0, "Width");
  23. item_ImageFormatControl->addChild(itemWidth);
  24. //CameraTree->setItemWidget(item, 1, spBox);
  25. CameraTree->setItemWidget(itemWidth, 1, spBoxckBoxWidget); //设置ckBox为item的第二列
  26. QTreeWidgetItem *itemPixelFormat = new QTreeWidgetItem;
  27. itemPixelFormat->setText(0, "Pixel Format");
  28. item_ImageFormatControl->addChild(itemPixelFormat);
  29. QComboBox *comboBoxPixelFormat = new QComboBox;
  30. comboBoxPixelFormat->addItem("Mono 8");
  31. comboBoxPixelFormat->addItem("RGB 8");
  32. CameraTree->setItemWidget(itemPixelFormat, 1, comboBoxPixelFormat);
  33. QSpinBox *spinHeight = new QSpinBox();
  34. spinHeight->setFixedWidth(100);
  35. QSlider *sliderHeight = new QSlider(Qt::Horizontal);
  36. QHBoxLayout *hboxlayoutHeight = new QHBoxLayout();
  37. hboxlayoutHeight->addWidget(spinHeight,8);
  38. hboxlayoutHeight->addWidget(sliderHeight);
  39. QWidget *widgetHeight = new QWidget();
  40. widgetHeight->setLayout(hboxlayoutHeight);
  41. QTreeWidgetItem *itemHeight = new QTreeWidgetItem;
  42. itemHeight->setText(0, "Height");
  43. item_ImageFormatControl->addChild(itemHeight);
  44. //CameraTree->setItemWidget(item, 1, spBox);
  45. CameraTree->setItemWidget(itemHeight, 1, widgetHeight); //设置ckBox为item的第二列
  46. QTreeWidgetItem *itemGainAuto = new QTreeWidgetItem;
  47. itemGainAuto->setText(0,"Gain Auto");
  48. item_AnalogControl->addChild(itemGainAuto);
  49. //CameraTree->setItemWidget(item_AnalogControl,);
  50. QTreeWidgetItem *itemBalanceWhiteAuto = new QTreeWidgetItem;
  51. itemBalanceWhiteAuto->setText(0, "Balance White Auto");
  52. itemBalanceWhiteAuto->setToolTip(0, "Balance White Auto");
  53. item_ImageQualityControl->addChild(itemBalanceWhiteAuto);
  54. QTreeWidgetItem *itemGamma= new QTreeWidgetItem;
  55. itemGamma->setText(0, "Gamma");
  56. item_ImageQualityControl->addChild(itemGamma);
  57. QSpinBox *spinGamma = new QSpinBox();
  58. spinGamma->setFixedWidth(100);
  59. QSlider *sliderGamma = new QSlider(Qt::Horizontal);
  60. QHBoxLayout *hboxlayoutGamma = new QHBoxLayout();
  61. hboxlayoutGamma->addWidget(spinGamma, 8);
  62. hboxlayoutGamma->addWidget(sliderGamma);
  63. QWidget *widgetGamma = new QWidget();
  64. widgetGamma->setLayout(hboxlayoutGamma);
  65. CameraTree->setItemWidget(itemGamma, 1, widgetGamma); //设置ckBox为item的第二列
  66. QWidget *widget = new QWidget();
  67. widget->setLayout(hLayout);
  68. dock_CameraSet->setWidget(widget);
  69. QTreeWidgetItem *itemOutputAlignment = new QTreeWidgetItem;
  70. itemOutputAlignment->setText(0,"Output Alignment");
  71. second->addChild(itemOutputAlignment);

 实现效果如下图:

 

QTreeWidget还有一些常见信号可用,可以用于一些软件中的点击QTreeWidget对象中添加的QTreeWidgeItem对象调用槽函数,常见信号如下

  1. void itemPressed(QTreeWidgetItem *item, int column);
  2. void itemClicked(QTreeWidgetItem *item, int column);
  3. void itemDoubleClicked(QTreeWidgetItem *item, int column);
  4. void itemActivated(QTreeWidgetItem *item, int column);
  5. connect(CameraTree, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(test(QTreeWidgetItem *, int)));//点击CameraTree中的QTreeWidgetItem对象即可调用槽函数

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/969158
推荐阅读
相关标签
  

闽ICP备14008679号