gpt4 book ai didi

c++ - QT按钮按下小部件

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:30 26 4
gpt4 key购买 nike

刚开始使用 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

源文件:

   #include <QPainter>
#include <QMouseEvent>
#include "tilesheetpane.h"

//Constructor & Paint Event ..

void tileSheetPane::mousePressEvent(QMouseEvent *me)
{
cursorPos = me->pos();
}

CursorPos 的值只是在它们的初始化 0 处表示。所以任何帮助将不胜感激 :) 正如我所说,使用 QT 的新手可能只是在 2 天前才开始使用,所以我仍在努力弄清楚事情 :D。

编辑;因此,在尝试了评论中的一些建议之后,似乎没有任何效果。我确实有 setMouseTracking(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 Designer Form,在我的 mainWindow.ui 文件中添加了一个新的小部件,将其提升为使用“tileSheetPane”,就是这样。现在完美运行:D。

关于c++ - QT按钮按下小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12189352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com