`
tcspecial
  • 浏览: 916322 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

QTreeWidget 添加editingFinished()信号

    博客分类:
  • QT
阅读更多

  一. 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 *lineEdit=new QLineEdit(this);
    connect(lineEdit,SIGNAL(editingFinished()),this,SLOT(finishEdit()));

    // 设置widget
    m_tree->setItemWidget(newItem,0,lineEdit);
    m_tree->expandItem(curItem);

    // 选中项
    m_tree->setCurrentItem(newItem);

    // 设置默认值
    lineEdit->setText("default");
    lineEdit->setSelection(0,7);
}

// 编辑完成后对应的槽函数
void TreeEdit::finishEdit()
{
    // 编辑完成后,移除widget,还原树
    QTreeWidgetItem *curItem=m_tree->currentItem();
    QLineEdit *edit=qobject_cast<QLineEdit*>(m_tree->itemWidget(curItem,0));
    if(!edit)
        return;

    QString text=edit->text();

    // 移除widget
    m_tree->removeItemWidget(curItem,0);

    // 还原值
    curItem->setText(0,text);
}

   运行效果如下:

   TreeEdit

        

  • 大小: 18.5 KB
分享到:
评论

相关推荐

    QT QTreeWidget添加复选框

    为了实现部分选中和全选功能,我们需要为QTreeWidget添加信号和槽。当用户点击复选框时,会触发一个信号,我们可以连接这个信号到一个槽函数,该函数会遍历所有项并更新它们的选中状态。对于父级复选框,我们需要...

    QTreeWidget添加勾选框

    QTreeWidget添加勾选框

    QTreeWidget的勾选,未勾选,半勾选

    QTreeWidget的基础操作包括添加、删除、修改和显示项。每个项(QTreeWidgetItem)都可以拥有子项,形成树状结构。为了实现勾选功能,我们需要关注QTreeWidgetItem的checkState()和setCheckState()方法。这两个方法...

    QTreeWidget用法并解决中文乱码问题 QTreeWidgetItem

    QTreeWidget用法并解决中文乱码问题 Qt中实现树形结构可以使用QTreeWidget类,QTreeWidgetItem,也可以使用QTreeView类,QTreeWidget继承自QTreeView类。

    QTreeWidget 双击编辑子节点

    总的来说,实现`QTreeWidget`子节点的双击编辑功能涉及对`QTreeWidgetItem`的操作、创建和管理编辑控件以及正确地连接信号与槽。这个功能增强了用户交互性,使得数据修改更为便捷。在实际项目中,可以根据需求定制...

    QT+TreeWidget 节点添加删除修改源码

    - **添加节点**:使用`addTopLevelItem()`或`insertItem()`来添加顶级节点,如果要在已有节点下添加子节点,可以使用`addChild()`。 - **删除节点**:`removeItemWidget()`可以删除指定的QTreeWidgetItem,如果是...

    Qt QDockWidget、QtreeWidget界面实现

    此外,还可以通过信号和槽机制,响应QTreeWidget中的项选择变化,动态更新其他界面元素,实现数据的联动显示。 总的来说,Qt的QDockWidget和QTreeWidget提供了丰富的功能,使得开发者能够创建出既美观又实用的用户...

    QtreeWidget初步实现(代码实现)

    接下来,创建QTreeWidgetItem对象并将其添加到QTreeWidget中。每个QTreeWidgetItem可以代表树结构中的一个节点,包含零个或多个子节点。例如,创建一个新的顶级项: ```cpp QTreeWidgetItem *topLevelItem = new ...

    QTreeWidget基础操作代码

    `QTreeWidget`提供了多种信号,如`itemClicked`、`itemDoubleClicked`等,可连接到相应的槽函数来处理用户交互。 ```cpp connect(treeWidget, &QTreeWidget::itemClicked, this, &MainWindow::onItemClicked); ``` ...

    QTreeWidget的增与删的基本的操作

    在Qt应用程序中,QTreeWidget提供了树状结构的视图,使得用户可以方便地添加、删除和操作节点。本篇文章将详细介绍QTreeWidget的增删操作,帮助开发者更好地理解和运用这一组件。 ### 一、添加节点 添加节点到...

    Qt QTreeWidget 简单易学的例子

    QTreeWidget类似于操作系统中的文件管理器,用户可以通过它来浏览、添加、删除和编辑节点。在这个例子中,我们有一个已经调试通过并可以运行的程序,这将帮助初学者快速理解和掌握QTreeWidget的使用。 首先,...

    QTreeWidget Demo

    2. 实现数据加载,可能是从数据库、文件系统或其他数据源获取数据,并将其转化为QTreeWidgetItem对象添加到QTreeWidget中。 3. 配置信号与槽,响应用户的点击、展开等操作。 4. 可能展示了如何自定义项的显示和行为...

    Qt例程源代码QTreeWidget.7z

    2. **添加和管理项**:如何创建QTreeWidgetItem,向QTreeWidget中添加项,以及设置项的文本、图标和自定义数据。 3. **信号与槽的使用**:如何连接信号到槽,处理用户的交互,例如单击、双击事件。 4. **拖放操作**...

    QTreeWidget项目拖拽功能

    我们需要获取拖放的原始数据,然后根据需求将其添加到目标QTreeWidget的适当位置。 5. **数据序列化与反序列化**: 在拖放过程中,数据需要被序列化为一个可以传输的格式。QT提供了`QMimeData`类来处理这个问题。...

    QTreeWidget应用Demo

    为了实现这一功能,首先需要覆盖QTreeWidget的`contextMenuPolicy()`属性,将其设置为`Qt::CustomContextMenu`,这样QTreeWidget会在右键点击时发出`customContextMenuRequested()`信号。接下来,连接这个信号到处理...

    QTreeWidget读写Xml功能

    例如,可以创建一个QTreeWidgetItem实例,将其文本设置为XML元素的标签,然后将其添加到QTreeWidget的根节点或现有子节点下。 - **保存XML**:从QTreeWidget中获取项目结构,创建新的QDomDocument对象,根据树结构...

    QtreeWidget初步实现(ui实现)

    然后在构造函数中初始化QTreeWidget,添加数据。如果要在构造函数中展开所有项,可以添加`ui-&gt;treeWidget-&gt;expandAll();`这行代码,它会确保程序启动时所有的树节点都默认展开。 5. **事件处理**:为了响应用户的...

    xml qtreewidget 增删改查

    3. **监听和响应用户操作**:连接QTreeWidget的信号(如`itemChanged()`)到相应的槽函数,根据用户的选择或编辑更新XML数据。 4. **可视化编辑**:可以为QTreeWidget添加自定义的编辑器,比如使用QLineEdit或...

    QT的QTreeWidget有checkbox时轻松选中

    在QTreeWidget中添加复选框(checkbox)功能,可以让用户选择或取消选择特定的项,这对于多选操作或者配置界面非常有用。在实际开发中,我们可能会遇到一个问题:当用户点击QTreeWidget中的某一行,但不是直接点击复...

    QTreeWidget详细设置

    要创建一个QTreeWidget,你需要在代码中实例化它,并添加QTreeWidgetItem对象来代表树的各个层级。 ```cpp QTreeWidget *treeWidget = new QTreeWidget(parent); QTreeWidgetItem *rootItem = new QTreeWidgetItem...

Global site tag (gtag.js) - Google Analytics