如何在Qgraphicsview上使用QPainter绘图

alan00000 2012-09-06 04:43:25
书上有示例代码
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
......
}
我使用Qtcreator创建了一个GUI程序,在"dialog1.ui"文件中拖了一个QGraphics View的控件grahphicsView,现在我想在dialog1上的graphicsView上绘图而不是在dialog1上绘图,paintEvent函数该如
何声明?如何实现?
是写void Dialog1::paintEvent()还是写void QGraphicsView::paintEvent();
函数体里面是写QPainter painter(this);
还是QPainter painter(ui->graphicsView);
第一个是绘制在dialog1上面,而不是dialog1上的graphicsView上,第二个运行的时候报错
QPainter::begin: Widget painting can only begin as a result of a paintEvent
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::setPen: Painter not active
QPainter::setBrush: Painter not active
QPainter::begin: Widget painting can only begin as a result of a paintEvent

我C++不是很好,希望解答的朋友能够给出示例代码
...全文
3154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_19239357 2015-05-25
  • 打赏
  • 举报
回复
在qt designer中,选定tabwidget,然后在右侧的property editor中找到currentTabText,修改这一项就可以了。选定不同的tab就可以修改你所需要的tab了
shiyanshiyong 2013-04-28
  • 打赏
  • 举报
回复
你这个问题解决了吗,我也想知道怎么办
alan00000 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
n年不回帖了, 看lz跟我长得相似.故

容器view画图->viewport()
[/Quote]
哥,你说你好不容易回帖了还回的这么笼统,能否清晰点,详细点?
loadme_litbear 2012-09-09
  • 打赏
  • 举报
回复
n年不回帖了, 看lz跟我长得相似.故

容器view画图->viewport()
haltwang 2012-09-07
  • 打赏
  • 举报
回复
自己写一个类,继承自QLabel,然后重载它的PaintEvent函数,进行画图。
如果你只是想显示一张图片的话可以用setPixmap这样的函数进行设置
alan00000 2012-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
Qt的绘图机制要求只能在自己的paintEvent里画自己,所以不能再Dialog的PaintEvent里画QGraphicsView.
楼上的建议可以试试。
我更推荐设置完QGraphicsScene后用QGraphicsItem来显示你想要显示的内容,这是一中面向对象的思想,一个QgraphicsItem类可以有 N个对象 ,写一次代码就可以重复利用多次,还是很方便的。
[/Quote]

那如果我的Dialog上不是QGraphicsView而是一个QLabel呢,我想在QLabel上用paintEvent绘图,那这个函数该如何声明,如何定义?
haltwang 2012-09-07
  • 打赏
  • 举报
回复
Qt的绘图机制要求只能在自己的paintEvent里画自己,所以不能再Dialog的PaintEvent里画QGraphicsView.
楼上的建议可以试试。
我更推荐设置完QGraphicsScene后用QGraphicsItem来显示你想要显示的内容,这是一中面向对象的思想,一个QgraphicsItem类可以有 N个对象 ,写一次代码就可以重复利用多次,还是很方便的。
  • 打赏
  • 举报
回复
需要在QGraphicsScene上绘制 然后和QGraphicsView一起使用

例如:
QGraphicsScene scene;
scene.addText("Hello, world!");

QGraphicsView view(&scene);
view.show();

21,493

社区成员

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

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