我正在尝试编写一个图形用户界面,用C++在上面绘制一个图形。我得到了一个错误列表,所有的错误都显示:"QPainter:: begin : Widget painting can onnly as a paintEvent“似乎没有任何内容正在绘制。
main.cpp
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <iostream>
using namespace std;
#include "skewNormal.h"
我对QPlainTextEdit类进行了子类化,并尝试覆盖paintEvent函数,以便可以在其上绘制一个行号区域。
def paintEvent(self, e):
super(CodeEditor, self).paintEvent(e)
qp = QtGui.QPainter()
qp.begin(self)
self.drawLineNoArea(qp)
qp.end()
当程序运行时,我得到以下输出:
QPainter::begin: Widget painting can only begin as a result of a paintEv
我有一个来自QWidget的派生类,让我们称之为DerivedWidget。并将MainWindow类中的MainWindow设置为中心小部件。我想改变DerivedWidget的背景色,我尝试了很多方法,它只是不能工作。
DerivedWidget::DerivedWidget(QWidget *parent) : QWidget(parent)
{
mBtn = new QPushButton(this); //if I have some other widgets on this, like a QPushButton
mBtn->setStyleSheet(
我盯着代码的时间越长,我对代码的理解就越少,但它变得越有趣。在一种情况下,QPainter画圆圈,而在另一种情况下,它不画圆圈。
我的问题是,如果它成功了,QPainter 就不会画。另一方面,如果它没有成功,它就会进行绘图。我真正想要实现的是根据状态改变颜色。这段相当难看的代码是用来说明的。将QP.begin()移到循环之外或在if-子句外最后只有一个drawEllipse()没有任何区别。
def paintEvent(self, e):
# compute here diameter, offsets, etc. but nothing qt related