当前位置:编程学习 > wap >>

新人求助QPainter

运行后出现QPainter::begin: Paint device returned engine == 0, type: 1,百度后还是无法解决

相关代码:

void MainWindow::on_actionNew_triggered()
{
    MdiChild *child = createMdiChild();
    child->show();
}
MdiChild *MainWindow::createMdiChild()
{
    MdiChild *child = new MdiChild;
    ui->mdiArea->addSubWindow(child);
    return child;
}
void MdiChild::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawLine(QPoint(0,0),QPoint(1000,1000));
}
如上,通过按钮新建一个child对象,然后重绘,运行后,按下按钮,调试栏却不断弹出 type: 1错误
} --------------------编程问答-------------------- 你画线的第二个点是不是超出了你画布的范围了?

写小一点试一试 --------------------编程问答--------------------
引用 1 楼 q245879 的回复:
你画线的第二个点是不是超出了你画布的范围了?

写小一点试一试


改成(5,5)了还是报错 --------------------编程问答--------------------
引用 1 楼 q245879 的回复:
你画线的第二个点是不是超出了你画布的范围了?

写小一点试一试


  以防万一把painter.drawLine(QPoint(0,0),QPoint(1000,1000));注释掉了,还是报相同的错 --------------------编程问答-------------------- 屏幕上有MdiChild吗?可以看见吗? --------------------编程问答--------------------
引用 4 楼 jdwx1 的回复:
屏幕上有MdiChild吗?可以看见吗?

屏幕上有MainArea控件,MdiChild是通过代码创建,然后添加到MainArea中的 --------------------编程问答--------------------
引用 4 楼 jdwx1 的回复:
屏幕上有MdiChild吗?可以看见吗?

所以程序运行后一开始看不见,要点击按钮,才会在mdiArea中创建一个,而出错代码是在创建后才会出现的 --------------------编程问答--------------------
引用 5 楼 zsjmsh 的回复:
Quote: 引用 4 楼 jdwx1 的回复:

屏幕上有MdiChild吗?可以看见吗?

屏幕上有MainArea控件,MdiChild是通过代码创建,然后添加到MainArea中的

不好意思打错了,是mdiArea控件 --------------------编程问答-------------------- 有这么几个问题:
1:MdiChild基类是QWidget吗?
2:paintEvent写错了没有?在QtCreator里应该是斜体,写的时候有提示,因为原来就有这个虚函数。
3:MdiChild在屏幕上确实可见,大小不是0?可以在MdiChild上放一个button,看看能不能看见。

引用 7 楼 zsjmsh 的回复:
Quote: 引用 5 楼 zsjmsh 的回复:

Quote: 引用 4 楼 jdwx1 的回复:

屏幕上有MdiChild吗?可以看见吗?

屏幕上有MainArea控件,MdiChild是通过代码创建,然后添加到MainArea中的

不好意思打错了,是mdiArea控件
--------------------编程问答--------------------
引用 8 楼 jdwx1 的回复:
有这么几个问题:
1:MdiChild基类是QWidget吗?
2:paintEvent写错了没有?在QtCreator里应该是斜体,写的时候有提示,因为原来就有这个虚函数。
3:MdiChild在屏幕上确实可见,大小不是0?可以在MdiChild上放一个button,看看能不能看见。

Quote: 引用 7 楼 zsjmsh 的回复:

Quote: 引用 5 楼 zsjmsh 的回复:

Quote: 引用 4 楼 jdwx1 的回复:

屏幕上有MdiChild吗?可以看见吗?

屏幕上有MainArea控件,MdiChild是通过代码创建,然后添加到MainArea中的

不好意思打错了,是mdiArea控件


1.MdiChild基类是QTextEdit
2.paintEvent在编辑器里是斜体
3.如图出现的文本框就是MdiChild,而且MdiChild在MdiArea里,MdiArea不支持直接拖包括按钮在内的控件
--------------------编程问答-------------------- 我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢? --------------------编程问答--------------------
引用 10 楼 zsjmsh 的回复:
我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢?

建议还是换其它的办法吧,这个太费劲了,你要什么效果呢?
往edit后面画图是最费劲的活。 --------------------编程问答--------------------
引用 11 楼 jdwx1 的回复:
Quote: 引用 10 楼 zsjmsh 的回复:

我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢?

建议还是换其它的办法吧,这个太费劲了,你要什么效果呢?
往edit后面画图是最费劲的活。

图纸表格,所以要画线,文字可更改 --------------------编程问答-------------------- 这样吧,你说一个和你要的edit功能差不多的软件。
我感觉你要做类似CAD?

引用 12 楼 zsjmsh 的回复:
Quote: 引用 11 楼 jdwx1 的回复:

Quote: 引用 10 楼 zsjmsh 的回复:

我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢?

建议还是换其它的办法吧,这个太费劲了,你要什么效果呢?
往edit后面画图是最费劲的活。

图纸表格,所以要画线,文字可更改
--------------------编程问答-------------------- 这样吧,给edit的viewport安装事件监视器,在viewport的paint事件时就可以绘图,但是这个是scrollview,要计算位置,绘图很难。 --------------------编程问答--------------------
引用 14 楼 jdwx1 的回复:
这样吧,给edit的viewport安装事件监视器,在viewport的paint事件时就可以绘图,但是这个是scrollview,要计算位置,绘图很难。

谢啦,因为表格不用变,所以决定采用把图纸表格用cad软件做成jpg格式,然后把QTextEdit背景设透明,再叠在以表格为背景图的Qwidget上的方案 --------------------编程问答--------------------
引用 13 楼 jdwx1 的回复:
这样吧,你说一个和你要的edit功能差不多的软件。
我感觉你要做类似CAD?

Quote: 引用 12 楼 zsjmsh 的回复:

Quote: 引用 11 楼 jdwx1 的回复:

Quote: 引用 10 楼 zsjmsh 的回复:

我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢?

建议还是换其它的办法吧,这个太费劲了,你要什么效果呢?
往edit后面画图是最费劲的活。

图纸表格,所以要画线,文字可更改


不是类似cad的,图纸表格是不变的,画线是一次性的 --------------------编程问答-------------------- 这个报错是画图设备不对吧。QPainter总共就支持四个画图设备
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,