2016-11-07 8 views
0

QGraphicsPixmapItemsをシーンに追加すると、アイテムを選択すると白い破線の選択矩形が表示されますが、この選択肢からデータを取得するのは難しいです。ここで私はそれをシーンに追加しています。私はシーンに追加QPixmapItemが選択されていることを確認します

void MainWindow::drawImage(curTarget *newTarget){ 
    QGraphicsPixmapItem *tgt = new QGraphicsPixmapItem;//new pixmap 
    tgt = scene->addPixmap(newTarget->myIcon);//assign pixmap image 
    tgt->setFlag(QGraphicsItem::ItemIsSelectable, true); 
    scene->addItem(tgt); 

}

各PixmapItemは、それに関連付けられた構造体のデータを持っている、と私はQGraphicsSceneの内側QGraphicsPixmapItemに選択したときにそのデータを取得できるようにする必要があります。 pixmapitemが選択されているときに選択矩形が表示されている場合、その事実に基づいて情報を返す簡単な方法はありませんか?おそらく選択されているものへのポインタ?

私はmousePressEventメソッドを実装していないが、私はそれに関連する何かを得て苦労しています。

void MainWindow::mousePressEvent(QMouseEvent *event){ 
qDebug() << "Clicked" << endl; 
} 

私はアプリを実行すると、私は私のpixmapitemsをクリックしたときを除いて、私のシーンでどこでもクリックされた参照してください。

私は限り、私は私のpixmapitemsに押さないでくださいと何かを、利用可能mousePressEventsと、実際に何かをするもののすべてのバージョンを試してみました。

+1

QGraphicsScene :: selectedItemsの() ? – jpnurmi

+0

'mousePressEvent(QGraphicsSceneEvent * event){ qDebug()<< scene-> selectedItems(); } ' 何も返さない – bauervision

+1

' mousePressEvent'をオーバーライドする代わりに、現在の選択をチェックし、それを['QGraphicsScene :: selectionChanged'](http://doc.qt.io/qt-5/)に接続する関数を作成します。 qgraphicsscene.html#selectionChanged)シグナル。 –

答えて

0

が、私は私のコメントを受け、助けに感謝し、私は最終的に私のために働いていたものをアップ掲載します。

 void MainWindow::drawImage(curTarget *newTarget) 
    { 
     QGraphicsPixmapItem *tgt = new QGraphicsPixmapItem 
     tgt = scene->addPixmap(newTarget->myIcon); 
     tgt->setFlag(QGraphicsItem::ItemIsSelectable, true); 
     scene->addItem(tgt); 
    } 

新しい機能を追加して...

void MainWindow::whatIsSelected(){ 
QDebug() <<scene->selectedItems() << endl;} 

そして、私は別の場所ウィンドウにシーンの接続をした...

QObject::connect(scene, SIGNAL(selectionChanged()), this, SLOT(whatIsSelected); 
+0

drawImageを1回だけ呼び出すとOKですが、 "connect"を呼び出すたびに古いものを削除せずに新しい接続を作成します。たくさんの画像を追加すると、選択肢が変更されるたびに「whatIsSelected」メソッドが何度も呼び出されるようになります。 「接続」コールを別の場所に移動して一度だけ行うか、Qt :: UniqueConnection接続タイプを「接続」コールに追加します。 – goug

+0

私が作成する各アイテムに必ず追加が必要です。私のユーザは、関連するデータを探索するために必要なだけ頻繁に選択/選択解除する機能が必要になります。大量の画像が追加されます。 – bauervision

+0

自分の回答を編集しました – bauervision

関連する問題