我很好奇,是否有一种方法可以更改install.packages("alluvial")
library(alluvial)
ggplot(final_df_2 , aes(x = number, stratum = treatment, alluvium = individual_id, fill = treatment, label = treatment)) +
scale_fill_brewer(type = "qual", palette = "Set3") +
geom_flow(width = 1/10) +
geom_stratum(width = 1/10, colour = NA) +
scale_x_continuous(breaks = 1:7, labels = c("1st Therapy", "2nd Therapy", "3rd Therapy", "4th Therapy", "5th Therapy", "6th Therapy", "7th Therapy"))+
ggtitle("Treatment across observation period")+
theme_minimal()+
theme( panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.text.y = element_blank())
以使其在用户放大点时使用中心按钮而不是鼠标左键进行平移。还有没有办法对用户可以平移的位置也没有任何限制?谢谢你的帮助。我在下面附加了一些代码。
QGraphicsView.ScrollHandDrag
答案 0 :(得分:2)
是的,您可以更改平移光标。
请将您的代码部分更改为这些。
def mousePressEvent(self, event):
if event.button() == Qt.MidButton:
self.viewport().setCursor(Qt.ClosedHandCursor)
self.original_event = event
handmade_event = QMouseEvent(QEvent.MouseButtonPress,QPointF(event.pos()),Qt.LeftButton,event.buttons(),Qt.KeyboardModifiers())
self.mousePressEvent(handmade_event)
#Im Sure I have to do something here.
super(PhotoViewer, self).mousePressEvent(event)
def mouseReleaseEvent(self, event):
if event.button() == Qt.MidButton:
#for changing back to Qt.OpenHandCursor
self.viewport().setCursor(Qt.OpenHandCursor)
handmade_event = QMouseEvent(QEvent.MouseButtonRelease,QPointF(event.pos()),Qt.LeftButton,event.buttons(),Qt.KeyboardModifiers())
self.mouseReleaseEvent(handmade_event)
super(PhotoViewer, self).mouseReleaseEvent(event)
说明
基本上,要更改QGraphicsView
上的鼠标光标图片,
QGraphicsView.vieport().setCursor()
为什么Qt.LeftButton
默认情况下可以更改光标?
我认为这是默认设置。Qt
的开发者可能会预测当光标形状为OpenHandCursor
时,用户可以通过按向左按钮来平移屏幕。
因此,对于LeftButton
而言,您可能无法使光标保持“打开”状态,反之亦然。
它嵌入在super(PhotoViewer, self).mousePressEvent(event)
中
我们将无法连接内容。
因此,您不希望通过LeftMouse进行更改,而是在此处编写return并编写其他命令。
手工事件对象
如果您按下MidButton
,则可以自己创建LeftButton
MouseEvent,
并将其传递给mousePressEvent。
mousePressEvent
接受它,并像处理leftButton
事件一样处理它。
如果仅将手工代码放在mousePressEvent
中,您将无法从陷阱中逃脱。因此,您也将手工代码放在mouseReleaseEvent
中。
完美。这取决于您在事件处理程序中编写命令的方式。
如果您不想平移leftButton,则可以在其中执行相同的操作。
也就是说,您可以在LeftButton
和MidButton
之间切换事件!