我试图了解如何重新定义项目的选择和转换方式(一旦被选中)QGraphicsScene.例如,更改线条的长度,移动线条,通过移动其中一个点来更改多边形.
我创建了一个孩子QGraphicsView并且已经开始重载它mousePressEvent,但似乎选择和移动动作都被捕获了QGraphicsItem.我怎样才能覆盖它,因为它们受到保护而且从孩子身上看不到QGraphicsView?
我可以想象我需要QGraphicsItem::mousePressEvent在a中重载myGraphicsItem,但那意味着我还必须重载以QGraphicsScene进行处理myGraphicsItem?如何移动场景中的选定项目位置?
有什么我可以看的例子吗?
我(显然)有点失落.
更新:根据反馈,我创建了一个QGraphicsItems如下的孩子:
class baseGraphicItem : public QGraphicsItem
{
public:
explicit baseGraphicItem(QVector<QPoint> data, operationType shape, QObject * parent = 0);
signals:
public slots:
public:
virtual QRectF boundingRect() const;
virtual void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0);
QPainterPath shape() const;
virtual void hoverEnterEvent ( QGraphicsSceneHoverEvent * event );
virtual void hoverLeaveEvent ( …Run Code Online (Sandbox Code Playgroud) 我试图找到一种方法来检查当前时间是否在给定的时间间隔内,开始和结束时间由用户(最终)给出。
在确保所有时间都在 UTC 之后,我一直在尝试使用 Time 包中的 After 和 Before,但显然我做错了什么。
代码看起来类似于这个例子:
func inTimeSpan(start, end, check time.Time) bool {
return check.After(start) && check.Before(end)
}
func main() {
now := time.Now()
newLayout := "15:04"
ns, _ := time.Parse(newLayout, strconv.Itoa(now.Hour())+":"+strconv.Itoa(now.Minute()))
srt, _ := time.Parse(newLayout, "23:00")
end, _ := time.Parse(newLayout, "05:00")
fmt.Println("1 : ", inTimeSpan(srt, end, ns))
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。