关于QScrollView滚动视图的问题
我的一段代码如下:class MyScrollView:public QScrollView{public: enum{WIDTH=16000, HEIGHT=12000}; MyScrollView(QWidget * parent=0, const char *name=0, WFlags f=0) :QScrollView(parent, name, f) { resizeContents(WIDTH, HEIGHT); };protected: void drawContents(QPainter* p, int cx, int cy, int cw, int ch) { int CX=0, CY=0; QScrollView::viewportToContents(0, 0, CX, CY); p->setPen(QColor(255, 0, 0)); p->setBrush(QColor(0, 0, 255)); p->fillRect(0, 0, WIDTH, HEIGHT, green); p->drawRect(CX, CY, 100, 100); };};int main (int argc, char *argv[]){ QApplication app(argc,argv); MyScrollView mainWidget; app.setMainWidget(&mainWidget); mainWidget.show(); return app.exec();} 我写了一个类MyScorllView继承了QScrollView,但是滚动视图时绘图结果也设想不符。另外:出现的不正确的结果后,如果其中的某个区域被遮挡再恢复时,被重绘的该区域是正确的结果。这是怎么回事?是不是QScrollView的updataContent()的问题? 调试时我发现p->fillRect(0, 0, WIDTH, HEIGHT, green)和p->drawRect(CX, CY, 100, 100)函数没有绘制到指定区域(估计只绘制了QRect(cx, cy, cw, ch)区域)。 我的本意是只要滚动视图就重绘viewport()区域,怎么解决好?多谢各位!