新人求助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错误
} --------------------编程问答-------------------- 你画线的第二个点是不是超出了你画布的范围了?
写小一点试一试 --------------------编程问答--------------------
改成(5,5)了还是报错 --------------------编程问答--------------------
以防万一把painter.drawLine(QPoint(0,0),QPoint(1000,1000));注释掉了,还是报相同的错 --------------------编程问答-------------------- 屏幕上有MdiChild吗?可以看见吗? --------------------编程问答--------------------
屏幕上有MainArea控件,MdiChild是通过代码创建,然后添加到MainArea中的 --------------------编程问答--------------------
所以程序运行后一开始看不见,要点击按钮,才会在mdiArea中创建一个,而出错代码是在创建后才会出现的 --------------------编程问答--------------------
不好意思打错了,是mdiArea控件 --------------------编程问答-------------------- 有这么几个问题:
1:MdiChild基类是QWidget吗?
2:paintEvent写错了没有?在QtCreator里应该是斜体,写的时候有提示,因为原来就有这个虚函数。
3:MdiChild在屏幕上确实可见,大小不是0?可以在MdiChild上放一个button,看看能不能看见。
屏幕上有MdiChild吗?可以看见吗?
屏幕上有MainArea控件,MdiChild是通过代码创建,然后添加到MainArea中的
不好意思打错了,是mdiArea控件
有这么几个问题:
1:MdiChild基类是QWidget吗?
2:paintEvent写错了没有?在QtCreator里应该是斜体,写的时候有提示,因为原来就有这个虚函数。
3:MdiChild在屏幕上确实可见,大小不是0?可以在MdiChild上放一个button,看看能不能看见。
屏幕上有MdiChild吗?可以看见吗?
屏幕上有MainArea控件,MdiChild是通过代码创建,然后添加到MainArea中的
不好意思打错了,是mdiArea控件
1.MdiChild基类是QTextEdit
2.paintEvent在编辑器里是斜体
3.如图出现的文本框就是MdiChild,而且MdiChild在MdiArea里,MdiArea不支持直接拖包括按钮在内的控件
--------------------编程问答-------------------- 我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢? --------------------编程问答--------------------
我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢?
建议还是换其它的办法吧,这个太费劲了,你要什么效果呢?
往edit后面画图是最费劲的活。 --------------------编程问答--------------------
我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢?
建议还是换其它的办法吧,这个太费劲了,你要什么效果呢?
往edit后面画图是最费劲的活。
图纸表格,所以要画线,文字可更改 --------------------编程问答-------------------- 这样吧,你说一个和你要的edit功能差不多的软件。
我感觉你要做类似CAD?
我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢?
建议还是换其它的办法吧,这个太费劲了,你要什么效果呢?
往edit后面画图是最费劲的活。
图纸表格,所以要画线,文字可更改
这样吧,给edit的viewport安装事件监视器,在viewport的paint事件时就可以绘图,但是这个是scrollview,要计算位置,绘图很难。
谢啦,因为表格不用变,所以决定采用把图纸表格用cad软件做成jpg格式,然后把QTextEdit背景设透明,再叠在以表格为背景图的Qwidget上的方案 --------------------编程问答--------------------
这样吧,你说一个和你要的edit功能差不多的软件。
我感觉你要做类似CAD?
我把MdiChild基类改成是QWidget就可以用了,不过还是有问题啊
1.为什么QTextEdit作为QWidget的子类,为什么就不能用QPainter?
2.由于要处理文字,还是想把QTextEdit作为MdiChild基类,怎么改呢?
建议还是换其它的办法吧,这个太费劲了,你要什么效果呢?
往edit后面画图是最费劲的活。
图纸表格,所以要画线,文字可更改
不是类似cad的,图纸表格是不变的,画线是一次性的 --------------------编程问答-------------------- 这个报错是画图设备不对吧。QPainter总共就支持四个画图设备
补充:移动开发 , Qt