首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

怎么在Qgraphicsview上使用QPainter绘图

2013-05-02 
如何在Qgraphicsview上使用QPainter绘图书上有示例代码void MyWidget::paintEvent(QPaintEvent *event){ Q

如何在Qgraphicsview上使用QPainter绘图
书上有示例代码
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++不是很好,希望解答的朋友能够给出示例代码
[解决办法]
需要在QGraphicsScene上绘制 然后和QGraphicsView一起使用

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

QGraphicsView view(&scene);
view.show();
[解决办法]
Qt的绘图机制要求只能在自己的paintEvent里画自己,所以不能再Dialog的PaintEvent里画QGraphicsView.
楼上的建议可以试试。
我更推荐设置完QGraphicsScene后用QGraphicsItem来显示你想要显示的内容,这是一中面向对象的思想,一个QgraphicsItem类可以有 N个对象 ,写一次代码就可以重复利用多次,还是很方便的。
[解决办法]
自己写一个类,继承自QLabel,然后重载它的PaintEvent函数,进行画图。
如果你只是想显示一张图片的话可以用setPixmap这样的函数进行设置
[解决办法]
n年不回帖了, 看lz跟我长得相似.故

容器view画图->viewport()

热点排行