ユーザーが図形をクリックし、図形の情報が表に表示されるという考え方です。これは、ユーザーがシェイプを選択した場合(シェイプの上にマウスをドラッグ)、うまく機能します。私はこのコードを変更してそのアクションを実行しようとしていますが、運が良いわけではありません。これは私がセレクトモードのためにやっているものです:クリックしたQGraphicsItemから情報を取得するには?
私はAAのコールを持っている:
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
マウスがリリースされると、私はデータを更新します。
//enter the mode for selecting
if(theMode == SelectObject){
if (this->items().isDetached()){
//we check if the object is selected
if (this->selectedItems().isEmpty()){
qDebug() << "not selected";
isSelected = false;
return;
}
//we get a list of the shapes
QList<QGraphicsItem*> stackOfShapes = this->items();
//we get index of selected shape
QGraphicsItem *selected = this->selectedItems().first();
int indexOfShape = stackOfShapes.indexOf(selected);
//we see which shape is (For a Rectangle)
switch (selected->type()) {
case 346:
{
updateDataOfRect();
}
break;
}
}
問題それは:
//we get index of selected shape
QGraphicsItem *selected = this->selectedItems().first();
形状がクリックされていない場合はどうすればいいですか?
私はmousePressEvent形状のサブクラスを修正しようとしました:
if (event->button() == Qt::MouseButton::LeftButton) {
this->setSelected(true);
}
解決策を見つけるためにいずれかのヘルプはできますか?
ありがとうございました。
[OK]を...今、それが働いている、私はインデックスを取得することができます。 :) – sgbzona