2010-11-21 57 views
1

我可以將QPixMapImage添加到QGraphicsScene中,但我有兩個問題。如何在qgraphicsview中移動QPixMapImage

首先我不能創建一個指向我的QPixmapItem的指針,這個指針在頭文件中聲明,我可以用QGraphicsScene創建。我得到一個錯誤「錯誤:沒有匹配函數調用'QGraphicsPixmapItem :: QGraphicsPixmapItem(MainWindow * const)」...當我創建我的QGraphicsScene在主要方式相同?

第二個問題:我不能移動QGraphicsPixmapItem的時候移動滑塊(obv我不會直到指針工作)。但我可以移動它嗎?還是必須重新繪製它?

#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 2010-11-22 22:35:15

+0

其實我想通過移動滑塊來移動像素圖,而不是點擊鼠標......你知道該怎麼做嗎? – JohnStudio 2010-11-23 00:23:42

+0

作者:「slider」你的意思是QSlider還是別的? – 2010-11-23 01:32:04

相關問題