QSlider 和 QSpinBox 之间的 Qt 模型视图架构

Posted

技术标签:

【中文标题】QSlider 和 QSpinBox 之间的 Qt 模型视图架构【英文标题】:Qt model view architecture between QSlider and QSpinBox 【发布时间】:2012-05-27 14:38:55 【问题描述】:

我想在 QSlider 和 QSpinBox 之间共享数据。如果我编辑一个,另一个应该得到相同的值,而不必使用模型视图委托架构手动完成。

知道如何将此架构与整数模型一起使用吗?

谢谢

【问题讨论】:

QSliderQSpinBox 是代表编辑吗?如果没有,您根本不应该使用 MVD - 只需使用信号/插槽。 我什至不明白除了信号/插槽之外您还想要什么其他方法。这些简单的小部件仅表示上下范围之间的值。他们并没有真正为任何数​​据结构建模。只是产生价值输出来驱动其他东西。 【参考方案1】:

我不太确定我是否理解您的问题,但在 Qt 中执行此操作的标准方法是仅使用内置信号和插槽 valueChanged(int)setValue(int)

connect(slider, SIGNAL(valueChanged(int)), spinbox, SLOT(setValue(int)));
connect(spinbox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));

请注意,这不会产生无限递归,而且在两行代码中,它是非常自动的。

【讨论】:

这是我使用的,但是当我使用设置器时它触发了信号。现在我正在使用 blockSignals(true);方法。谢谢。 @YassirEnnazk 您可能还想查看QSlider::sliderMoved()QAbstractSpinBox::editingFinished() 信号,这些信号在您使用setValue() 时不会发出。 你是正确的 sliderMoved() 信号但是 QAbstractSpinBox::editingFinished() 在我使用编辑 SpinBox 时没有被触发。

以上是关于QSlider 和 QSpinBox 之间的 Qt 模型视图架构的主要内容,如果未能解决你的问题,请参考以下文章

七PyQT5控件——QSlider,QSpinBox

Qt error ------ no matching function for call to QObject::connect(QSpinBox*&, <unresolved ove

QT的组件布局

QSlider - 如何为空间着色

QT 初阶 1.3 节 控件的几何排列

8.布局管理器