J'essaie de me déplacer dans la fenêtre affichée par GraphicsView. Selon Qt documentation, cela peut être fait en appelant la méthode translate() de la classe QGraphicsView.QGraphicsView - voir la navigation ne fonctionne pas
J'ai essayé de le faire sans succès jusqu'à présent et je n'ai pas trouvé d'explication à ce problème jusqu'à présent. Quelqu'un peut-il m'aider ? J'ai créé un exemple simple qui montre mon problème:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsScene *scene = new QGraphicsScene();
ui->graphicsView->setScene(scene);
ui->graphicsView->scene()->addItem(new QGraphicsLineItem(0,-10, 0,10));
ui->graphicsView->scene()->addItem(new QGraphicsLineItem(-10,0, 10,0));
}
MainWindow::~MainWindow()
{
delete ui;
}
graphicsView est d'un type de sous-classé QGraphicsView. Voici le code:
MyGraphicsView::MyGraphicsView(QWidget *parent)
: QGraphicsView(parent)
{
}
void MyGraphicsView::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Up)
translate(0, 10);
else if (event->key() == Qt::Key_Down)
translate(0, -10);
else if (event->key() == Qt::Key_Left)
translate(-10, 0);
else if (event->key() == Qt::Key_Right)
translate(10, 0);
update();
}
Comme la classe est très petite, je ne pense pas qu'il y ait un besoin de partager les en-têtes. Cependant, si vous pensez que je devrais le faire, il suffit de poster un commentaire et je vais les partager.
Nous vous remercions de votre réponse. Ce que j'essayais de faire, c'est d'abord deviner, en tournant la vue pendant que la scène reste inchangée, mais je ne pensais pas à la scène trop petite ... Ce n'était qu'un petit exemple, mon vrai cas est un peu Un peu différent. Mais mon problème est maintenant compris. Merci :-) –