如何在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()