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
確かにちょっと –