Qt 在customDelegate内更改Qdoublespinxbox的值时发出信号

Qt 在customDelegate内更改Qdoublespinxbox的值时发出信号,qt,qtablewidget,emit,Qt,Qtablewidget,Emit,我有子类qstyleditemdelegate 在col==1和col==2中,我创建了QdoubleSpinXbox,我想发出我的 Qdoublespinxbox,用于计算col1*col2小计 意思是:驱逐代表 每次更改Qdoublespinxbox的值时,我都会更新值小计您可以将信号添加到在setModelData重新实现中发出的QStyledItemDelegate子类中。信号应具有关于新值和数据可能位置的信息。在另一个类中,捕获该信号并更新值小计。您可以将信号添加到在setModelD

我有子类qstyleditemdelegate

在col==1和col==2中,我创建了QdoubleSpinXbox,我想发出我的

Qdoublespinxbox,用于计算col1*col2小计

意思是:驱逐代表


每次更改Qdoublespinxbox的值时,我都会更新值小计

您可以将信号添加到在setModelData重新实现中发出的QStyledItemDelegate子类中。信号应具有关于新值和数据可能位置的信息。在另一个类中,捕获该信号并更新值小计。

您可以将信号添加到在setModelData重新实现中发出的QStyledItemDelegate子类中。信号应具有关于新值和数据可能位置的信息。在其他类中捕获该信号并更新值小计。

在代理类中创建一个槽:

void My_delegate::valueChanged() {
  emit commitData(sender());
}
在My_delegate::createEditor中,将spinbox的valueChanged信号连接到My_delegate::valueChanged

确保在委托类中正确实现了setEditorData方法。在这种方法中,您应该基于spinbox的值设置模型的数据。当您发出commitData时,将自动调用此方法


现在,当用户编辑spinbox时,数据立即进入模型。您可以使用模型的dataChanged信号来跟踪数据更改。

在代理类中创建一个插槽:

void My_delegate::valueChanged() {
  emit commitData(sender());
}
在My_delegate::createEditor中,将spinbox的valueChanged信号连接到My_delegate::valueChanged

确保在委托类中正确实现了setEditorData方法。在这种方法中,您应该基于spinbox的值设置模型的数据。当您发出commitData时,将自动调用此方法


现在,当用户编辑spinbox时,数据立即进入模型。可以使用模型的数据信号来跟踪数据更改。

指定C++标签可能会有所帮助。指定C++标签可能会有所帮助。我已在setModelData重新实现中发出信号,但我收到一个错误C:\test\ex1\customtableselldelegate.cpp:114:错误:将“const customtableselldelegate”作为“void customtableselldelegate::rowUnlockedint”的“this”参数传递将丢弃限定符[-fpPermissive]发出rowUnlockedindex.row^如下定义信号:signals:void unlockroint row const;是的,谢谢,它工作正常,代码很短:,但我想知道到底是什么让Difference变得更好呢;const函数只能调用另一个const函数,signal也是一个函数,但您没有实现它。Qt moc将使用此unlockroint行信号,我已在setModelData重新实现中发出信号,但我收到一个错误C:\test\ex1\customtableselldelegate.cpp:114:错误:将“const customtableselldelegate”作为“void customtableselldelegate::rowUnlockedint”的“this”参数传递将丢弃限定符[-fpPermissive]发出rowUnlockedindex.row^如下定义信号:signals:void unlockroint row const;是的,谢谢,它工作正常,代码很短:,但我想知道到底是什么让Difference变得更好呢;一个常量函数只能调用另一个常量函数,signal也是一个函数,但你没有实现它Qt moc会做的我尝试了你的方法我在这行中得到错误emit commitdata sender;C:\test\ex1\customtableselldelegate.cpp:129:错误:从“QObject*”到“QWidget*”[-fpermissive]emit commitDatasender的转换无效^使用static_cast将QObject*转换为QWidget*。我尝试了您的方法,但在这一行中出现错误emit CommitData Sender;C:\test\ex1\customtableselldelegate.cpp:129:错误:从“QObject*”到“QWidget*”[-fpermissive]emit commitDatasender的转换无效^使用静态_cast将QObject*转换为QWidget*。