请教怎么在tabwidget的一个tab页面上用QPainter画图?

sniper2011 2013-08-15 03:57:56
tabwidget有几个tab页面,我想在一个指定的tab页面上画图,用QPainter自定义绘图。
或者用什么其他方法在指定的tab页面下绘图。
怎么实现,请详细点,非常谢谢!
...全文
623 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
swj08156 2014-03-23
  • 打赏
  • 举报
回复
引用 6 楼 jdwx1 的回复:
我这有个简单的例子:http://download.csdn.net/detail/jdwx1/4108947,0分下载。
谢谢,这个应该是只能在切换到当前的tab时执行一次画图,那么我要是实时更新,不停的画图呢。 我按照你的写法修改了之后,运行没有错误,但是界面一直出不来。当我在构造函数里把ui->topologyTab->installEventFilter(this);注释掉了就好了。这是怎么个情况???[/quote][/quote] 非常感谢,已经解决[/quote]、 遇到和你一样的问题,请问如何解决的?
swj08156 2014-03-23
  • 打赏
  • 举报
回复
谢谢,这个应该是只能在切换到当前的tab时执行一次画图,那么我要是实时更新,不停的画图呢。 我按照你的写法修改了之后,运行没有错误,但是界面一直出不来。当我在构造函数里把ui->topologyTab->installEventFilter(this);注释掉了就好了。这是怎么个情况???[/quote][/quote]、 非常感谢,已经解决 遇到和你一样的问题,请问如何解决的?
swj08156 2014-03-23
  • 打赏
  • 举报
回复
你好,遇到和你一样的问题,看到你说问题解决,想请问解决方案~~~
jdwx 2013-08-20
  • 打赏
  • 举报
回复
Qt的绘图比较特别,也是类似MVC方式(MFC是直接绘图,也可类似MVC),数据和视图分开,paintEvent里只要写绘图代码。其它的地方处理数据,更新完了数据,直接update就会重绘。
引用 9 楼 sniper2011 的回复:
[quote=引用 6 楼 jdwx1 的回复:] 我这有个简单的例子:http://download.csdn.net/detail/jdwx1/4108947,0分下载。
谢谢,这个应该是只能在切换到当前的tab时执行一次画图,那么我要是实时更新,不停的画图呢。 我按照你的写法修改了之后,运行没有错误,但是界面一直出不来。当我在构造函数里把ui->topologyTab->installEventFilter(this);注释掉了就好了。这是怎么个情况???[/quote]
sniper2011 2013-08-20
  • 打赏
  • 举报
回复
引用 6 楼 jdwx1 的回复:
我这有个简单的例子:http://download.csdn.net/detail/jdwx1/4108947,0分下载。
谢谢,这个应该是只能在切换到当前的tab时执行一次画图,那么我要是实时更新,不停的画图呢。 我按照你的写法修改了之后,运行没有错误,但是界面一直出不来。当我在构造函数里把ui->topologyTab->installEventFilter(this);注释掉了就好了。这是怎么个情况???
_Gx 2013-08-20
  • 打赏
  • 举报
回复
引用 7 楼 sniper2011 的回复:
[quote=引用 5 楼 q245879 的回复:] [quote=引用 4 楼 sniper2011 的回复:] [quote=引用 2 楼 q245879 的回复:] [quote=引用 1 楼 hai200501019 的回复:] 自定义一个widget,重写paintEvent ( QPaintEvent * event ) 画你想画的图形,然后调用 QTabWidget::setCornerWidget
+1 自己自定义一个widget作为QTabWidget的一个页面。[/quote] 怎么自定义一个widget,要创建一个类吗,具体怎么操作啊,谢谢![/quote] 自己定义一个类去继承QWidget,重写这个类的paintEvent [/quote] 那怎么放到tabwidget里面呢,用insertTab(int index,QWidget *widget,const QString &)吗。那么这个函数中的QWidget *widget怎么定义。 这样的话,我把图都画在了自定义的类里面,那么我怎么调用这个类不停的画图呢。[/quote] 你要在你调用的地方构造:

MyWidget widget = new MyWidget(this);
然后在通过insertTab去添加这个widget。 paintEvent事件是在MyWidget重写的,你只要在widget的区域就可以不停的画图了。
sniper2011 2013-08-20
  • 打赏
  • 举报
回复
引用 5 楼 q245879 的回复:
[quote=引用 4 楼 sniper2011 的回复:] [quote=引用 2 楼 q245879 的回复:] [quote=引用 1 楼 hai200501019 的回复:] 自定义一个widget,重写paintEvent ( QPaintEvent * event ) 画你想画的图形,然后调用 QTabWidget::setCornerWidget
+1 自己自定义一个widget作为QTabWidget的一个页面。[/quote] 怎么自定义一个widget,要创建一个类吗,具体怎么操作啊,谢谢![/quote] 自己定义一个类去继承QWidget,重写这个类的paintEvent [/quote] 那怎么放到tabwidget里面呢,用insertTab(int index,QWidget *widget,const QString &)吗。那么这个函数中的QWidget *widget怎么定义。 这样的话,我把图都画在了自定义的类里面,那么我怎么调用这个类不停的画图呢。
sniper2011 2013-08-20
  • 打赏
  • 举报
回复
引用 10 楼 jdwx1 的回复:
Qt的绘图比较特别,也是类似MVC方式(MFC是直接绘图,也可类似MVC),数据和视图分开,paintEvent里只要写绘图代码。其它的地方处理数据,更新完了数据,直接update就会重绘。 [quote=引用 9 楼 sniper2011 的回复:] [quote=引用 6 楼 jdwx1 的回复:] 我这有个简单的例子:http://download.csdn.net/detail/jdwx1/4108947,0分下载。
谢谢,这个应该是只能在切换到当前的tab时执行一次画图,那么我要是实时更新,不停的画图呢。 我按照你的写法修改了之后,运行没有错误,但是界面一直出不来。当我在构造函数里把ui->topologyTab->installEventFilter(this);注释掉了就好了。这是怎么个情况???[/quote][/quote] 非常感谢,已经解决
sniper2011 2013-08-20
  • 打赏
  • 举报
回复
引用 8 楼 q245879 的回复:
[quote=引用 7 楼 sniper2011 的回复:] [quote=引用 5 楼 q245879 的回复:] [quote=引用 4 楼 sniper2011 的回复:] [quote=引用 2 楼 q245879 的回复:] [quote=引用 1 楼 hai200501019 的回复:] 自定义一个widget,重写paintEvent ( QPaintEvent * event ) 画你想画的图形,然后调用 QTabWidget::setCornerWidget
+1 自己自定义一个widget作为QTabWidget的一个页面。[/quote] 怎么自定义一个widget,要创建一个类吗,具体怎么操作啊,谢谢![/quote] 自己定义一个类去继承QWidget,重写这个类的paintEvent [/quote] 那怎么放到tabwidget里面呢,用insertTab(int index,QWidget *widget,const QString &)吗。那么这个函数中的QWidget *widget怎么定义。 这样的话,我把图都画在了自定义的类里面,那么我怎么调用这个类不停的画图呢。[/quote] 你要在你调用的地方构造:

MyWidget widget = new MyWidget(this);
然后在通过insertTab去添加这个widget。 paintEvent事件是在MyWidget重写的,你只要在widget的区域就可以不停的画图了。[/quote] 非常感谢!
_Gx 2013-08-19
  • 打赏
  • 举报
回复
引用 4 楼 sniper2011 的回复:
[quote=引用 2 楼 q245879 的回复:] [quote=引用 1 楼 hai200501019 的回复:] 自定义一个widget,重写paintEvent ( QPaintEvent * event ) 画你想画的图形,然后调用 QTabWidget::setCornerWidget
+1 自己自定义一个widget作为QTabWidget的一个页面。[/quote] 怎么自定义一个widget,要创建一个类吗,具体怎么操作啊,谢谢![/quote] 自己定义一个类去继承QWidget,重写这个类的paintEvent
sniper2011 2013-08-19
  • 打赏
  • 举报
回复
引用 2 楼 q245879 的回复:
[quote=引用 1 楼 hai200501019 的回复:] 自定义一个widget,重写paintEvent ( QPaintEvent * event ) 画你想画的图形,然后调用 QTabWidget::setCornerWidget
+1 自己自定义一个widget作为QTabWidget的一个页面。[/quote] 怎么自定义一个widget,要创建一个类吗,具体怎么操作啊,谢谢!
sniper2011 2013-08-19
  • 打赏
  • 举报
回复
引用 1 楼 hai200501019 的回复:
自定义一个widget,重写paintEvent ( QPaintEvent * event ) 画你想画的图形,然后调用 QTabWidget::setCornerWidget
怎么自定义一个widget,要创建一个类吗,具体怎么操作啊,谢谢!
jdwx 2013-08-19
  • 打赏
  • 举报
回复
我这有个简单的例子:http://download.csdn.net/detail/jdwx1/4108947,0分下载。
_Gx 2013-08-15
  • 打赏
  • 举报
回复
引用 1 楼 hai200501019 的回复:
自定义一个widget,重写paintEvent ( QPaintEvent * event ) 画你想画的图形,然后调用 QTabWidget::setCornerWidget
+1 自己自定义一个widget作为QTabWidget的一个页面。
海的神话 2013-08-15
  • 打赏
  • 举报
回复
自定义一个widget,重写paintEvent ( QPaintEvent * event ) 画你想画的图形,然后调用 QTabWidget::setCornerWidget

21,489

社区成员

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

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