ฉันมีปัญหากับ QGrahicsRectItem
ใน QGraphicsScene
สิ่งที่ฉันต้องการคือสามารถย้ายรายการด้วยเมาส์ได้ แต่ปัญหาคือในกรณีของฉัน สี่เหลี่ยมสำหรับการลากนั้นใหญ่กว่าตัวรายการเอง
นี่คือรหัสที่ฉันใช้:
class Test: public QGraphicsView
{
public:
Test();
private:
virtual void resizeEvent (QResizeEvent * event);
QGraphicsScene* m_pScene;
};
Test::Test()
{
m_pScene = new QGraphicsScene();
setScene(m_pScene);
m_pScene->setSceneRect(0, 0, 100, 100);
for (int i = 0 ; i < 10 ; i++)
{
QGraphicsRectItem * pItem = new QGraphicsRectItem();
pItem->setFlag(QGraphicsItem::ItemIsMovable);
pItem->setBrush(QBrush(QColor(190, 100, 100)));
pItem->setRect(QRectF(10*i, 10, 5, 80.f));
pItem->setCursor(Qt::SizeAllCursor);
m_pScene->addItem(pItem);
}
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
resize(600, 200);
fitInView(scene()->sceneRect());
show();
}
void Test::resizeEvent(QResizeEvent * event)
{
QGraphicsView::resizeEvent(event);
fitInView(scene()->sceneRect());
}
ดังนั้นเมื่อฉันรันโปรแกรม ฉันจะมีหน้าต่างนี้ และฉันสามารถลากรายการต่างๆ ได้ ดูเหมือนทุกอย่างจะโอเค
แต่หากมองใกล้ ๆ โซนการลากจะใหญ่กว่าตัวไอเท็มเอง (ดูภาพสี่เหลี่ยมสีน้ำเงินในภาพหน้าจอต่อไปนี้) สี่เหลี่ยมสีน้ำเงินหมายความว่า ถ้าฉันเลื่อนเมาส์ในสี่เหลี่ยมนี้ เคอร์เซอร์จะเปลี่ยนไป และฉันสามารถลากรายการได้
ฉันรู้สึกว่าปัญหาเกี่ยวข้องกับ “fitInView(scene()->sceneRect());” เส้น. ถ้าฉันลบมันออกไป มันก็ใช้งานได้ ถ้าฉันเพิ่ม 'มาตราส่วน (5,1)' แสดงว่ามีปัญหาเดียวกัน
คุณมีความคิดว่าปัญหาอาจเกิดขึ้นได้อย่างไร?