2010-11-21 11 views
1

QPixMapImage를 QGraphicsScene에 추가 할 수 있지만 두 가지 문제가 있습니다.qgraphicsview에서 QPixMapImage를 이동하는 방법

먼저 QGraphicsScene으로 헤더에 선언 된 QPixmapItem에 대한 포인터를 만들 수 없습니다.

"오류 : 'QGraphicsPixmapItem :: QGraphicsPixmapItem (MainWindow * const)'호출에 일치하는 함수가 없습니다 ... 동일한 방법으로 Main에서 QGraphicsScene을 만들면 어떻게됩니까?

두 번째 문제 : QGraphicsPixmapItem을 슬라이더가 움직일 때 주변으로 이동할 수 없습니다 (포인터가 작동 할 때까지 표시되지 않습니다). 그러나 나는 그것을 움직일 수 있습니까, 아니면 그것을 다시 칠해야합니까?

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

#include <QtGui> 
#include <QGraphicsView> 
#include <QGraphicsPixmapItem> 
#include <QPixmap> 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    scene = new QGraphicsScene(this); 
    QPixmap arrow = QPixmap::fromImage(QImage("ARROW.png")); 
    arrowItem = new QGraphicsPixmapItem(this); 
    arrowItem->setPixmap(arrow); 
    ui->graphicsView->setScene(scene); 
    ui->horizontalSlider->setMaximum(2000); 

} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::on_horizontalSlider_sliderMoved(int position) 
{ 
    arrowItem->setPos(position,position); 
    scene->addItem(arrowItem); 

} 

헤더 :

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QGraphicsPixmapItem> 

namespace Ui { 
    class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private: 
    Ui::MainWindow *ui; 
    QGraphicsPixmapItem *arrowItem; 
    QGraphicsScene *scene; 

private slots: 
    void on_horizontalSlider_sliderMoved(int position); 
}; 

#endif // MAINWINDOW_H 

답변

0

문제 # 1 :

당신이 QGraphicsPixmapItem 선언 이러한 생성자가없는 수단을 받고있어 오류;

QGraphicsPixmapItem(QGraphicsItem *parent = 0 
#ifndef Q_QDOC 
         // ### obsolete argument 
         , QGraphicsScene *scene = 0 
#endif 
     ); 
    QGraphicsPixmapItem(const QPixmap &pixmap, QGraphicsItem *parent = 0 
#ifndef Q_QDOC 
         // ### obsolete argument 
         , QGraphicsScene *scene = 0 
#endif 
     ); 

이슈 # 당신이 장면의 주위에 당신의 그래픽 항목을 드래그 할 수 있도록하려면 제대로 질문을 이해 2

경우 : 당신은이 중 하나를 사용합니다. view->setDragMode 메서드를 사용하여이 기능을 전환 할 수 있습니다.

아래의 예를 들어 당신을 위해 일하는 것이 있는지 확인하십시오 :이 도움이

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    QGraphicsScene* scene = new QGraphicsScene(QRect(-50, -50, 400, 200)); 

    QPixmap image = QPixmap::fromImage(QImage("image.JPG")); 
    QGraphicsPixmapItem* pixMapItem = new QGraphicsPixmapItem(); 
    pixMapItem->setPixmap(image); 
    scene->addItem(pixMapItem); 

    QGraphicsView* view = new QGraphicsView(ui->centralWidget); 
    view->setScene(scene); 
    view->setGeometry(QRect(50, 50, 400, 200)); 
    view->setDragMode(QGraphicsView::ScrollHandDrag); 
    view->show(); 
} 

희망,

+0

감사 서지에 관하여! – JohnStudio

+0

실제로 마우스 클릭과 반대로 슬라이더를 움직여서 픽스맵을 이동하고 싶습니다 ... 어떻게하는지 알고 있습니까? – JohnStudio

+0

"slider"는 QSlider 또는 다른 것을 의미합니까? –

관련 문제