私は、ユーザーが背景画像の上でマウス/QSpinBoxイベントを使用して省略記号を変更できるようにするGUIを開発しています。
ユーザーが楕円をクリックすると、楕円の色が変わり、「選択」されるように設定したいと思います。
QGraphicsEllipseItemでQGraphicsView/Sceneを使用しています。ここに私の問題があります、setPen(QPen & const)
したがって、呼び出しは参照です:
- スタックにペンを割り当てて渡すと、セグメンテーション違反が発生します。
- ヒープにペンを割り当てても、新しいペンを設定しても削除されません
- アクセサメソッドはペンのコピーを返します
とにかく、私はこれを間違ってアプローチしているに違いありません、何か提案はありますか?
PS-まだ別のメンバー変数を作成することは避けたいと思います。私はたくさんの楕円を持っているつもりです、それぞれがそれ自身のペン変数を持つべきではありません!
このコードはセグメンテーション違反を引き起こします:
void MyClass::SetupEllipses()
{
QPen pen();
pen.setColor(QColor(255,0,0));
pen.setWidth(2);
m_ellipse = new QGraphicsItemEllipse(); //This is a member variable of MyClass
m_ellipse->setRect(some ssize here);
m_ellipse->setPen(pen);
m_graphicsview->scene()->addItem(m_ellipse); //m_graphicsview is also a member variable of MyClass and has had a scene added to it.
}