QT按钮按下小工具

QT Button Press On Widget

本文关键字:工具 按钮 QT      更新时间:2023-10-16

使用Qt是一个全新的概念。我有一个自定义的小部件,我需要接收按钮按下,然后从按钮按下找到鼠标在小部件上的位置。不幸的是,目前mousePressEvent(QMouseEvent*me)似乎无法正常工作。所以我想知道我到底做错了什么,代码如下;

头文件:

#ifndef TILESHEETPANE_H
#define TILESHEETPANE_H
#include <QWidget>
#include "global.h"
class tileSheetPane : public QWidget
{
   Q_OBJECT
 public:
     tileSheetPane(int scnWidth, Global *global, QWidget *parent);
 protected:
     void mousePressEvent(QMouseEvent *me);
     void paintEvent(QPaintEvent *);
 private:
     Global *tempGlobal;
     QPoint cursorPos;
     int tileSheetPaneWidth, tileSheetPaneHeight, renderOffsetY;
 };
 #endif // TILESHEETPANE_H

Src文件:

   #include <QPainter>
   #include <QMouseEvent>
   #include "tilesheetpane.h"
   //Constructor & Paint Event .. 
   void tileSheetPane::mousePressEvent(QMouseEvent *me)
   {
        cursorPos = me->pos();
   }

CursorPos的值只是在其初始化的0处。因此,任何帮助都将不胜感激:),正如我所说,使用QT的新手可能在两天前才开始,所以我仍在努力解决问题:D。

编辑;因此,在尝试了评论中的一些建议后,似乎什么都不起作用。我确实设置了鼠标跟踪(true),但仍然没有。我按照建议在函数中插入了一个qDebug调用,似乎从来没有调用过mousePressEvent。

 void tileSheetPane::mousePressEvent(QMouseEvent *me)
 {
     cursorPos = me->pos();
     //These Never Show Up!
     qDebug() << me->pos().x();
     qDebug() << me->pos().y();
 }

也许有什么东西在阻止或阻止这个调用,但我不确定它可能是什么?

所以我无法让鼠标点击正常工作,所以在谷歌上搜索后,我最终找到了以下视频;http://www.youtube.com/watch?v=E29KiTRYpjk

由于我的小部件很小,所以我基本上只是重新做了整个事情。但这是值得的。本质上,我删除了我的旧文件,创建了一个Qt设计器表单,在我的mainWindow.ui文件中添加了一个新的小部件,并将其升级为使用"tileSheetPane",就这样。

试试这个:

qDebug() << me->pos()->x();

在QWidget子类的构造函数中添加setMouseTracking(true);

如果没有这个,你的小工具将无法跟踪鼠标的位置。

MouseTracking属性文档