我有一个可以
的USB设备现在我想创建一个可用于指示位置和目标的小部件,但我也希望目标指示器可以用鼠标拖动。到目前为止我所完成的是指示部分,它看起来像这样:
黑色,填充三角形是位置;目标指标为绿色。
我想要的是能够拖动目标指示器。在完成此操作时,应使用当前目标指标的值更新设备的目标。我是gui编程的新手(直到现在我只关注USB的东西;这是我的第一个自定义小部件),我不知道如何实现这一点。
将目标指标作为小部件的一部分,或者它应该是某种孩子,这是一个好主意吗?我很确定这种工作有共同的模式,但我不知道找到它们的正确关键字。谷歌搜索“QWidget拖”这样的东西只会导致我拖放功能,这不是我需要的。
答案 0 :(得分:1)
我认为你不应该打扰儿童小部件。在主QWidget中,您只需要覆盖三个虚拟保护功能:
QWidget::mousePressEvent
- 这应该检查用户是否点击了目标指标,如果是,则将bool“clickedOnIndicator”设置为true(并接受鼠标事件);否则将bool设置为false,忽略鼠标事件,并调用默认实现
QWidget::mouseMoveEvent
- 首先检查clickedOnIndicator
是否为真;如果是这样,将指示器移动到新位置并发出信号YourWidget::indicatorMoved(int)
,否则调用默认实现
QWidget::paintEvent
- 将指标绘制在正确的位置(并在油漆事件中做任何其他事情)