QTreeWidget的itemChanged信号

edit: editing failed 错误可能是因为在 itemChanged 信号触发时尝试再次进入编辑状态会引发问题。这个问题通常是因为在 itemChanged 槽函数中重新触发了编辑逻辑。为了避免这种情况,使用一个定时器来延迟编辑操作,确保编辑是在 itemChanged 信号处理完毕之后才进行的。

void MainWindow::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column)
{
    if(item&&column==0){
        QTimer::singleShot(0, this, [=]() {
             ui->treeWidget->editItem(item,0);
        });
    }
}

QTimer::singleShot 是 Qt 提供的一个便利函数,用于在指定的时间间隔后执行一次性操作。它接受一个毫秒数、接收者对象以及一个槽函数作为参数。

毫秒数0):这是延迟的时间,以毫秒为单位。0 毫秒表示在当前事件循环处理完所有挂起的事件后立即执行。

  • QTreeWidget: 直接提供 itemChanged 信号,当任何项的数据变化时发出。
  • QTreeView: 使用模型的 dataChanged 信号,当模型中的数据变化时发出。你需要连接到模型(例如 QStandardItemModel 或自定义模型)的 dataChanged 信号。

断开信号与槽

disconnect(treeWidget, &QTreeWidget::itemChanged, receiver, member);
//阻止发出的所有信号
ui->treeWidget->blockSignals(true);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值