0
사용자 정의 항목 CPP :추가 지정 QGraphicsItem는 ScrollBarAsNeeded 및 정렬 옵션을 사용하지
MapNode::MapNode(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent)
{
this->x = x;
this->y = y;
this->w = w;
this->h = h;
}
QRectF MapNode::boundingRect() const
{
return QRectF(DeafultX, DeafultY, DeafultW, DeafultH);
}
void MapNode::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QBrush redBrush(Qt::red);
QPen blackPen(Qt::black);
blackPen.setWidth(1);
painter->setBrush(redBrush);
painter->setPen(blackPen);
painter->drawRect(x,y,w,h);
}
장면에 추가
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QBrush redBrush(Qt::red);
QPen blackPen(Qt::black);
blackPen.setWidth(1);
for(int i = 0; i < 992; i+=62)
{
for(int j = 0; j < 992; j+=62)
{
QGraphicsItem *myItem = new MapNode(i,j,60,60);
scene->addItem(myItem);
//scene->addRect(i,j,60,60,blackPen,redBrush); //working fine
}
}
}
- 그들이부터 그리기 시작 내 항목을 추가 그래픽보기의 중간 (그래픽보기 정렬을 가운데로 설정합니다. addRect와 잘 맞습니다), 항목을 더 추가 할 때도 그래픽보기 화면에서 스크롤 막대가 작동하는지 확인할 수 있습니다. 항목을 추가하면 비활성화됩니다.
- 나는 장면 (특히 ScrollBarAsNeeded 및 정렬 옵션)에 rect (addRect)를 추가 할 때 그래픽보기에서 동일한 동작을 얻으려고합니다.
감사합니다.
DeafultX, DeafultY, DeafultW 및 DeafultH는 무엇입니까? – Anthony
그들은 (0, 0, 100, 100)입니다. 스크롤 막대를 그래픽보기에서 항상 켜기로 설정하면 표시되지만 비활성화되었으므로 사용할 수 없습니다. – GoldenAxe
바운딩 rect 함수가'QRectF (x, y, w, h)'를 리턴하도록하십시오. – Anthony