Qt 5.7 (최신 버전)을 사용하고 있습니다. QGraphicsScene에서 마우스 이벤트를 작동시킬 수는 없지만 장면 외부의 창에서 작업합니다. 나는이 question.QGraphicsScene에서 Qt 마우스 이벤트가 작동하지 않습니다.
그래서 나는이 같은 내 주요 위젯의 하위 클래스에서 QWidget::mouseMoveEvent()
을 덮어했다 따랐다 : mouseMoveEvent
, mouseGrabber
, mousePressEvent
, mouseReleaseEvent
, 또는 mouseDoubleClickEvent
:
// header:
class MyWidget {
...
void mouseMoveEvent(QMouseEvent * event);
};
// source:
MyWidget::MyWidget() {
setMouseTracking();
}
void MyWidget::mouseMoveEvent(QMouseEvent * event) {
}
그것은 작동하지 않습니다. 하지만 어쨌든 mousePressEvent
에서만 작동합니다.
Qt의 버그 일 수 있습니까?
소스 코드 : objectloader.cpp에서
ObjectLoader::ObjectLoader(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ObjectLoader)
{
ui->setupUi(this);
scene=new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
ui->graphicsView->setMouseTracking(true);
setMouseTracking(true);
}
그게 내가 그때 objectloader.h
class ObjectLoader : public QMainWindow
{
Q_OBJECT
public:
explicit ObjectLoader(QWidget *parent = 0);
~ObjectLoader();
private slots:
void mouseMoveEvent(QMouseEvent *event);
protected:
private:
};
#endif // OBJECTLOADER_H
에서 그 방법을 정의하는 두 objectloader.h 마우스 추적 설정된 그리고 objectloader.cpp에서 해당 메서드 구현
void ObjectLoader::mouseMoveEvent(QMouseEvent *event){
qDebug()<<"Mouse moved";
}
(hasMouseTracking()) {qDebug() << "true";}이 코드를 실행하면 true가 반환됩니다. –
소스를 게시 할 수 있습니까? – hyun
잠깐만. –