qt中如何画图,使用QPainter,提示QPainter is not active
如题,我只需要在窗体的一个指定区域内刷为黑色,我在程序中调用QPainter,提示QPainter is not active,难道QPainter只能在PaintEvent中才能调用吗。代码如下,请高手帮忙指点,我要的效果只是刷为黑色,用其他方法也行:
void MainWindow::initLogo()
{
/* brush a black background */
QPainter paint(this);
paint.setPen(QPen(Qt::black));
paint.setBrush(QBrush(Qt::black, Qt::SolidPattern));
paint.drawRect(10, 20, this->width() - 20, this->height() - 30);
.......
}
void MainWindow::initLogo()
{
/* brush a black background */
QPainter paint(this);
paint.setPen(QPen(Qt::black));
paint.setBrush(QBrush(Qt::black, Qt::SolidPattern));
paint.drawRect(10, 20, this->width() - 20, this->height() - 30);
.......
}
...全文
相关推荐
QPainter错误解决方案[项目代码]
文章详细解释了在使用QPainter绘制图形时遇到的错误“QPainter::setPen: Painter not active”的解决方案。作者指出,根据Qt API的警告信息,QPainter只能在QWidget的paintEvent()函数或其调用的函数中使用。文章提供了官方示例代码,并建议通过调用QWidget::update()函数来手动触发paintEvent事件,从而正确使用QPainter进行绘图操作。
qt qprinter的类做了简要翻译
对qt的printer进行了简要的翻译,用于文件的打印操作,还是很实用的
QStyle定制弹出菜单
用QStyle自定义实现的弹出菜单,菜单背景透明;菜单上的文字及鼠标滑过时的图案不透明。
Qt子控件绘制实战:QPainter三种实现方式及避坑指南
在GUI开发中,自定义绘制是控件二次开发的核心能力。Qt框架提供的QPainter绘图引擎,通过paintEvent事件机制将图形渲染到指定设备上。然而,直接在子控件上绘制常面临生命周期与绘制目标错位的问题。本文结合工程实践,系统梳理了在QWidget等子控件上绘制的三种主流思路:子类化重写paintEvent、事件过滤器拦截以及QPixmap离屏渲染。并深入分析各自适用场景、性能差异与常见陷阱,如更新机制、背景透明、坐标系变换等。这些技术广泛应用于波形显示、仪表盘、标注框选等交互界面,是Qt自定义控件进阶
QT报错:QBackingStore::endPaint() called with active painter
【代码】QT报错:QBackingStore::endPaint() called with active painter。


