在子类化的QWidget类中画图,如何让图随控件大小缩放

tomzhch 2015-10-19 06:06:15
子类化一个QWidget类时,用paintEvent函数中画了如图的一系列小正方形,但是当拖拽窗口时,控件中的图片不能随之改变,用什么函数可以让图片永远占满整个窗口? 这个QWidget子类里只有画的图,没有其他控件
正常运行程序的时候显示是这样的:

希望拖拽窗口时图片也占满窗口,但现在是这样的:
...全文
906 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hidxl 2015-10-29
  • 打赏
  • 举报
回复
试试用 graphicview 和 QGraphicsWidget 能否得到你想要的效果.
tomzhch 2015-10-20
  • 打赏
  • 举报
回复
引用 2楼专注创业产品开发 的回复:
你的paintEvent函数实现有问题; 参照我给你做的demo:

    QPainter painter(this);
    QPen pen;
    pen.setColor(QColor(255,0,0,255));
    pen.setWidth(10);
    painter.setPen(pen);
    painter.drawRect(0, 0, size().width(), size().height());
并不需要其他的实现
其实我是想做一个迷宫的程序,边界的大小是由迷宫的大小决定的,并不是由窗口的大小决定的,我希望在窗口大小改变时,画出的迷宫图形能随着窗口缩放。之后还想实现保证迷宫在窗口中保持居中的位置,因为当窗口是长方形而迷宫是正方形时,并不能保证整个图形完全充满整个窗口,只能让它居中,两边留出空白。
gldcpp 2015-10-20
  • 打赏
  • 举报
回复
paintevent会实时刷新的,你在paint的时候直接将宽高设置为主窗口size的宽高就可以了
冷静忍耐 2015-10-20
  • 打赏
  • 举报
回复
引用 3 楼 mqdsg 的回复:
[quote=引用 1 楼 u013466477 的回复:] 没有函数可以一步到位,自己画的当然看你想要画多大。 你可以画的时候根据窗口大小来,重新实现resizeEvent就行了,size改变则在事件中update
请看下我的实现,貌似不需要的呢[/quote] 好吧,是可以,其实是一样的,你这样简便点,我忘记了所有事件包括paintEvent都是会实时更新尺寸的
在飞的特拉斯 2015-10-20
  • 打赏
  • 举报
回复
引用 1 楼 u013466477 的回复:
没有函数可以一步到位,自己画的当然看你想要画多大。 你可以画的时候根据窗口大小来,重新实现resizeEvent就行了,size改变则在事件中update
请看下我的实现,貌似不需要的呢
在飞的特拉斯 2015-10-20
  • 打赏
  • 举报
回复
你的paintEvent函数实现有问题; 参照我给你做的demo:

    QPainter painter(this);
    QPen pen;
    pen.setColor(QColor(255,0,0,255));
    pen.setWidth(10);
    painter.setPen(pen);
    painter.drawRect(0, 0, size().width(), size().height());
并不需要其他的实现
冷静忍耐 2015-10-19
  • 打赏
  • 举报
回复
没有函数可以一步到位,自己画的当然看你想要画多大。 你可以画的时候根据窗口大小来,重新实现resizeEvent就行了,size改变则在事件中update

16,821

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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