QSlider 和 QSpinBox 之间的 Qt 模型视图架构
Posted
技术标签:
【中文标题】QSlider 和 QSpinBox 之间的 Qt 模型视图架构【英文标题】:Qt model view architecture between QSlider and QSpinBox 【发布时间】:2012-05-27 14:38:55 【问题描述】:我想在 QSlider 和 QSpinBox 之间共享数据。如果我编辑一个,另一个应该得到相同的值,而不必使用模型视图委托架构手动完成。
知道如何将此架构与整数模型一起使用吗?
谢谢
【问题讨论】:
QSlider
和 QSpinBox
是代表编辑吗?如果没有,您根本不应该使用 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 模型视图架构的主要内容,如果未能解决你的问题,请参考以下文章
Qt error ------ no matching function for call to QObject::connect(QSpinBox*&, <unresolved ove