Я пытаюсь перемещать область просмотра, отображаемую графическим изображением. Согласно Qt documentation, это можно сделать, вызвав метод translate() класса QGraphicsView.QGraphicsView - просмотр навигации не работает
Я пытался сделать это без успеха до сих пор, и я пока не нашел объяснения этой проблемы. Может кто-нибудь мне помочь ? я создал простой пример, который показывает мою проблему:
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 имеет подклассы типа QGraphicsView. Вот его код:
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();
}
Поскольку класс очень мал, я не думаю, что есть необходимость в обмене заголовков. Однако, если вы чувствуете, что я должен это сделать, просто опубликуйте комментарий, и я поделюсь ими.
Благодарим вас за ответ. То, что я пытался сделать, это ваше первое предположение, перемещение вокруг представления, пока сцена остается неизменной, но я не думал о том, что сцена слишком маленькая ... Это был лишь небольшой пример, мой настоящий случай немного бит другой. Но теперь моя проблема понятна. Спасибо :-) –