QGraphicsScene 인스턴스를 GUI에서 스크롤바가 활성화되고 전체보기 포트 업데이트로 설정했습니다. 내 그래픽을 스크롤 할 때 나는 그들이 올바르게 코드에 추가하지만, 현장은 어떤 시점에 사라 QGraphics와 Graphics에 추가 된 항목을 얻고 (사용자 정의 클래스는 QGraphicsItem에서 상속) 스크롤에 표시 될 것으로 예상된다보기 :스크롤 QGraphicsView 및 QGraphicsScene
class CSquare : public QObject, public QGraphicsItem
https://www.box.com/s/h4h94×1avgay1crzvyzx
:void CSquare::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
static int sz;
painter->setFont(fnt_);
painter->fillRect(this->r,this->br);
painter->drawRect(this->r);
//painter->drawText(this->p,this->txt);
if (txt == "")
return;
if (fnt_.pixelSize()>0)
sz = fnt_.pixelSize();
else
if (fnt_.pointSize()>0)
sz = fnt_.pointSize();
else
if (fnt_.pointSizeF()>0)
sz = fnt_.pointSizeF();
switch (this->al_flag)
{
case 1:
painter->drawText(this->p.x(),this->p.y(),sz*txt.size(),2*sz,Qt::AlignRight,this->txt);
break;
case 2:
//painter->drawText(this->r,Qt::AlignLeft,this->txt);
painter->drawText(this->p.x(),this->p.y(),sz*txt.size(),2*sz,Qt::AlignLeft,this->txt);
break;
case 3:
//painter->drawText(this->r,Qt::AlignCenter,this->txt);
painter->drawText(this->p.x(),this->p.y(),sz*txt.size(),2*sz,Qt::AlignCenter,this->txt);
break;
case 4:
//painter->drawText(this->r,Qt::AlignJustify,this->txt);
painter->drawText(this->p.x(),this->p.y(),sz*txt.size(),2*sz,Qt::AlignJustify,this->txt);
break;
}
}
하나가이 비디오 스크린 캐스트에서 응용 프로그램 실행에 사라 방법을 볼 수 있습니다 다음과 같이 페인트 방법이 구현된다
누군가가 문제를 암시 할 수 있습니다. 그래야 그래픽 항목이보기에서 사라지지 않을 것입니다. 사전에
감사합니다.
해당 box.com 링크가 손상되었습니다. – Chris