QGraphicsPixmapItem を使用している場合、スロットに接続するために QObject から派生する必要があることは承知していますが、これを行うのに苦労しています。私が望むものを達成するための別の方法を試しました.onMousePressとisSelectableを試しました.
run->setFlag(QGraphicsPixmapItem::ItemIsSelectable); if (run->isSelected()) { qDebug() << "selected"; } else if (!run->isSelected()) { qDebug() << "not selected"; }
run は選択可能ですが、最初の引数が true になることはなく、常に「選択されていません」
これは私のコードです。私はスロットメソッドに取り組んでいます。
mainwindow.cpp
int MainWindow::sim()
{
...
QGraphicsPixmapItem* run = new QGraphicsPixmapItem(QPixmap::fromImage(image6));
run->scale(0.3,0.3);
run->setPos(-200,-200);
run->setFlag(QGraphicsPixmapItem::ItemIsSelectable);
run->setCursor(Qt::PointingHandCursor);
connect(run, SIGNAL(selectionChanged()), this, SLOT(runClicked()));
scene->addItem(run);
//pause
QGraphicsPixmapItem* pause = new QGraphicsPixmapItem(QPixmap::fromImage(image7));
pause->scale(0.3,0.3);
pause->setPos(-160,-197);
pause->setFlag(QGraphicsPixmapItem::ItemIsSelectable);
pause->setCursor(Qt::PointingHandCursor);
connect(pause, SIGNAL(selectionChanged()), this, SLOT(pauseClicked()));
scene->addItem(pause);
...
}
void MainWindow::runClicked()
{
qDebug() << "run Clicked";
}
void MainWindow::pauseClicked()
{
qDebug() << "pause Clicked";
}
mainwindow.h
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
int sim();
...
public slots:
void runClicked();
void pauseClicked();
...
明らかに、スロットに接続するときにエラーが発生します。誰か助けてくれませんか?ありがとうございました。