关于QScrollView滚动视图的问题

weixin_38056080 2019-09-19 06:14:09
我的一段代码如下: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()区域,怎么解决好?多谢各位!
...全文
16 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧