QTreeWidget 添加editingFinished()信号

本文探讨了如何在QTreeWidget中设置可编辑,并利用QLineEdit的editingFinished()信号实现编辑完成后的操作。由于QTreeWidget本身不直接支持编辑完成的信号,作者提出通过设置QLineEdit作为项的 widget 来捕获这一动作。
摘要由CSDN通过智能技术生成

  一. QTreeWidget设置可编辑

connect(m_tree,itemChanged(QTreeWidgetItem*,int),this,SLOT(saveModify(QTreeWidgetItem*,int));

QTreeWidgetItem *item=new QTreeWidgetItem(m_tree);
item->setText(0,"hello");
item->setFlags(item->flags()|Qt::ItemIsEditable); // 设置可编辑属性

   上面这种方式,当子节点编辑完成时,如果节点文本值仍然为hello, 不能触发saveModify槽. 因为子节点文本值没有改变,不能很好的表现编辑完成后这一动作. MVC里提供了对QTableWidget的模型QAbstractTabelModel的支持,但是却没有提供对树形结构的模型支持,看来此路不通. 

 

二. 利用QLineEdit来实现编辑完成后动作

      只有QLineEdit和QAbstracSpinBox支持editingFinished()信号, 因此我们可以在树形结构中通过setItemWidget()来设置QLineEdit组件

// 添加子节点
void TreeEdit::addNode()
{
    QTreeWidgetItem *curItem=m_tree->currentItem();
    QTreeWidgetItem *newItem=new QTreeWidgetItem(curItem);

    // 添加子节点
    curItem->addChild(newItem);

    // 使用QTextEdit的信号
    QLineEdit *lin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值