鼠标悬停在 QGraphicsPixmapItem 上后 Qt 显示工具提示

     2023-02-17     93

关键词:

【中文标题】鼠标悬停在 QGraphicsPixmapItem 上后 Qt 显示工具提示【英文标题】:Qt Display tooltip after mouse hover on QGraphicsPixmapItem 【发布时间】:2014-05-10 19:04:47 【问题描述】:

我正在使用 QGraphicView 来显示包含 QGraphicsPixmapItems 的游戏地图。我需要在鼠标悬停在 QGraphicsPixmapItem 时显示工具提示。

为了保存 QGraphicsPixmapItem 位置,我使用 MazeItem:

#ifndef MAZEITEM_H
#define MAZEITEM_H

#include <QPoint>
#include <QGraphicsItem>

class MazeItem

private:
    QPoint myPosition;
    QString myToolTip;

public:
    MazeItem();
    QPoint position() const;
    QString toolTip() const;
    void setToolTip(const QString &toolTip);
    void setPosition(const QPoint &position);
    QPoint getPosition();
    QGraphicsPixmapItem * pixmap;
;

#endif // MAZEITEM_H

我有小部件类来显示游戏地图:

#include <QWidget>
#include <QtGui>
#include <QGraphicsView>
#include <QToolTip>
#include "mazeitem.h"

class MazeGUI : public QWidget

    Q_OBJECT

private:
    QGraphicsView * graphicsView;
    QGraphicsScene * graphicsScene;
    QString sceneString;
    int imageSize;
    QList<MazeItem> mazeItems;
    void addItem(int x, int y, QPixmap picture);
    bool event(QEvent *event);
    int itemAt(const QPoint &pos);

public:
    explicit MazeGUI(QWidget *parent = 0);
    void setScene(QString sceneString);

signals:

public slots:
    void redraw();

;
#endif // MAZEGUI_H

在构造函数中我设置了鼠标跟踪。

MazeGUI::MazeGUI(QWidget *parent) :
    QWidget(parent)

    setMouseTracking(true);
    ...

这就是我添加新迷宫项目的方式。

void MazeGUI::addItem(int x, int y, QPixmap picture)

    MazeItem mazeItem;
    mazeItem.setPosition(QPoint(x, y));
    mazeItem.setToolTip("text");
    mazeItem.pixmap = this->graphicsScene->addPixmap(picture);
    mazeItem.pixmap->setPos(y, x);
    mazeItems.append(mazeItem);

这是我从 Qt 教程中获得的,

bool MazeGUI::event(QEvent *event)

    if (event->type() == QEvent::ToolTip) 

        // HERE - it never goes here!!      

        QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
        int index = itemAt(helpEvent->pos());
        if (index != -1) 
            QToolTip::showText(helpEvent->globalPos(), mazeItems[index].toolTip());
         else 
            QToolTip::hideText();
            event->ignore();
        

        return true;
    
    return QWidget::event(event);


int MazeGUI::itemAt(const QPoint &pos)

    for (int i=0; i < mazeItems.size(); ++i)
    
        if (mazeItems[i].getPosition() == pos)
            return i;
    
    return -1;

【问题讨论】:

那有什么问题? 问题是tooltip没有出现,甚至连启动都打不开。 【参考方案1】:

在错误的对象上添加了工具提示:

代替:

mazeItem.setToolTip("text");

应该是:

mazeItem.pixmap->setToolTip("text");

【讨论】:

如何使qgraphicspixmapitem对象不可被选取

...这样的提问没有什么意义不要多想,想多了累 参考技术Bqgraphicspixmapitem.setFlag(QGraphicsItem.ItemIsSelectable,False)#设置False后不可选取qgraphicspixmapitem.setFlag(QGraphicsItem.ItemIsMovable,False)#设置False后不可移动 查看详情

Jquery 鼠标悬停在 Div 类上

】Jquery鼠标悬停在Div类上【英文标题】:JquerymouseHoveronDivclass【发布时间】:2021-11-2817:44:26【问题描述】:我想添加鼠标悬停效果。它是一个具有相同div标签的产品部分,如果我将鼠标悬停在图像类上,我只想显示当前图像的标... 查看详情

快速鼠标悬停/鼠标悬停的完整悬停动画持续时间?

】快速鼠标悬停/鼠标悬停的完整悬停动画持续时间?【英文标题】:Fullhoveranimationdurationwithquickmouseover/mouseout?【发布时间】:2015-09-2501:17:05【问题描述】:我对图像有悬停效果。如果您将鼠标悬停在它上面并用鼠标停留在那里... 查看详情

jQuery Time 鼠标悬停在元素上(悬停)

】jQueryTime鼠标悬停在元素上(悬停)【英文标题】:jQueryTimemouseisoverelement(Hover)【发布时间】:2011-06-0204:16:42【问题描述】:我在几个链接上附加了一个悬停事件,当你越过它时会出现一个框。有没有一种方法可以让悬停事件仅... 查看详情

当鼠标悬停(悬停)在对象上时,鼠标光标应该改变(three.js)

】当鼠标悬停(悬停)在对象上时,鼠标光标应该改变(three.js)【英文标题】:Whenmouseover(hover)onobjectthemousecursorshouldchange(three.js)【发布时间】:2017-08-1411:45:47【问题描述】:我在场景中添加了一个球体和平面几何体,当单击平... 查看详情

悬停、鼠标悬停和鼠标移出

】悬停、鼠标悬停和鼠标移出【英文标题】:Hover,mouseoverandmouseout【发布时间】:2011-05-2616:33:45【问题描述】:我正在学习和使用jQuery,并希望为某些元素显示一个删除图标。我有一个外部主div,其中包含元素的包装器数量。在... 查看详情

当鼠标不再悬停在悬停动画上时,悬停动画会立即停止吗?

】当鼠标不再悬停在悬停动画上时,悬停动画会立即停止吗?【英文标题】:Hoveranimationstopsimmediatelywhenthemouseisnolongerhoveringoverit?【发布时间】:2014-09-2205:36:25【问题描述】:我有一个带有摆动动画的图像,当鼠标悬停在它上面... 查看详情

在鼠标悬停时更改背景颜色并在鼠标悬停后将其删除

】在鼠标悬停时更改背景颜色并在鼠标悬停后将其删除【英文标题】:Changebackgroundcoloronmouseoverandremoveitaftermouseout【发布时间】:2011-04-1401:25:09【问题描述】:我有表是forum。我的jQuery代码:<scripttype="text/javascript">$(document).re... 查看详情

在jQuery中,在鼠标悬停时添加类并在鼠标悬停时将其删除的最佳方法是啥?

】在jQuery中,在鼠标悬停时添加类并在鼠标悬停时将其删除的最佳方法是啥?【英文标题】:InjQuerywhat\'sthebestwaytoaddaclassonmouseoverandremoveitonmouseout?在jQuery中,在鼠标悬停时添加类并在鼠标悬停时将其删除的最佳方法是什么?【发... 查看详情

如何在鼠标悬停在图像上时暂停动画

】如何在鼠标悬停在图像上时暂停动画【英文标题】:Howtopausetheanimationonmousehoveronimage【发布时间】:2018-05-1822:13:46【问题描述】:我需要帮助来停止鼠标悬停动画并继续鼠标悬停。请参阅下面的url以查看代码。谢谢http://jsfiddle.... 查看详情

鼠标悬停播放声音

】鼠标悬停播放声音【英文标题】:Playsoundonmouseover【发布时间】:2014-04-0712:11:17【问题描述】:我将在鼠标悬停时在链接上添加声音,然后在鼠标移出时停止,当鼠标再次悬停时,声音将开始播放。我即将把它放在链接上,但... 查看详情

如何使悬停信息气泡出现在 WPF 中的鼠标悬停上?

】如何使悬停信息气泡出现在WPF中的鼠标悬停上?【英文标题】:HowcanImakeahoverinfobubbleappearonmouseoverinWPF?【发布时间】:2010-12-2222:39:48【问题描述】:我想让文本气泡在鼠标悬停在TextBlock上时出现。以下代码是我能得到的最接近... 查看详情

在鼠标悬停时将文本悬停在帖子图像上

】在鼠标悬停时将文本悬停在帖子图像上【英文标题】:Hovertextoverpostimageonmouseover【发布时间】:2015-08-0619:36:07【问题描述】:我正在使用Genesis框架在wordpress中重新设计博客。这可能是有史以来最简单的事情,但我找不到一个... 查看详情

如何将鼠标悬停在子元素上而不悬停在 CSS 中的父元素上?

】如何将鼠标悬停在子元素上而不悬停在CSS中的父元素上?【英文标题】:HowdoIhoveroverachildelementwithouthoveringovertheparentinCSS?【发布时间】:2017-04-1909:59:51【问题描述】:是否可以将鼠标悬停在嵌套的子元素上而不触发父元素上的... 查看详情

悬停保持活动状态,直到鼠标悬停在另一个可悬停对象上

】悬停保持活动状态,直到鼠标悬停在另一个可悬停对象上【英文标题】:Hoverstaysactive,untilmouseoveranotherhoverableobject【发布时间】:2013-05-1909:19:51【问题描述】:假设我有三个盒子。每个都可以悬停,当悬停时,它们的背景颜色... 查看详情

将鼠标悬停在完整播放影片剪辑

】将鼠标悬停在完整播放影片剪辑【英文标题】:Playingamoviecliptoitsfullwithmouseover【发布时间】:2017-05-0615:08:44【问题描述】:在Adob​​eFlash和ActionScript3.0中,我在按钮中有一个影片剪辑。我想在鼠标悬停时播放整个影片剪辑。... 查看详情

悬停在鼠标离开后仍然存在的 CSS 样式

】悬停在鼠标离开后仍然存在的CSS样式【英文标题】:HoverCSSstylingthatpersistsaftermouseaway【发布时间】:2016-02-1805:27:46【问题描述】:我有一个HTMLul横幅,它有两个li子栏,在悬停时显示。但是,如果您将鼠标移开或悬停在另一个... 查看详情

将鼠标悬停在按钮上时仅更改部分文本

】将鼠标悬停在按钮上时仅更改部分文本【英文标题】:onlypartialtextchangeonhoveroverbutton【发布时间】:2013-09-1811:06:24【问题描述】:当鼠标悬停在按钮上时,我希望按钮中文本的字体颜色变为白色且不带下划线。目前,文本颜色... 查看详情