QTreeWidget树形编辑器添加QLineEdit和QComboBox

首先在UI上放置一个QTree这就不多说了。

先设置QTree:

    ui->sendTreeWidget->setHeaderLabels(QStringList{"Name","Value"});//标题
    ui->sendTreeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
    ui->sendTreeWidget->setStyle(QStyleFactory::create("windows"));//windows风格
    connect(ui->sendTreeWidget,&QTreeWidget::customContextMenuRequested,this,&sequenceUi::slot_sendTreeWidgetMenu);//开启右击菜单模式
    connect(ui->sendTreeWidget,&QTreeWidget::itemChanged,this,&sequenceUi::slot_sendItemChanged);//用于实时保存

 然后再QTree上添加数据,这里以添加widget为例QLineEdit:

    QTreeWidgetItem *item = new QTreeWidgetItem(QStringList{"send",data.command});
    item->setIcon(0,QIcon(QString(":/new/prefix1/send.ico")));
    item->setCheckState(0,data.enable? Qt::Checked:Qt::Unchecked);//选中状态
    QTreeWidgetItem * commandNameItem = new 
    QTreeWidgetItem(QStringList{"Command",data.command});
    QLineEdit * commandEdit = new QLineEdit();
    commandEdit->setPlaceholderText("command name ");
    commandEdit->setText(data.command);
    connect(commandEdit,&QLineEdit::textChanged,[=](QString stre){
        commandNameItem->setText(1,stre);
        item->setText(1,stre);
    });
    item->addChild(commandNameItem);
    ui->sendTreeWidget->setItemWidget(commandNameItem,1,commandEdit);

最后是怎么获取数据了,上面用的是信号和槽,在QLineEdit text变更时直接更改对应的QTreeWidgetItem的Text,到时需要保存数据时遍历QTree就可以了。

还有另外一种这里不设信号槽直接用dynamic()<>获取也是可以的 :

dynamic_cast<QLineEdit*>(ui->TreeWidget->itemWidget(childItem,1))->text()

QComboBox原理一样,这里就不贴图了。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值