В программе есть два класса, основной Widget и наследник Ellipse. C помощью принципа сигналов и слотов я пытаюсь нарисовать фигуру в основном виджете, точнее, сделать так чтобы рисунок в наследнике Ellipse отображался на форме Widget, то есть вставить один виджет в другой. Как это реализовать в коде?
Ellipse.hКод
class Ellipse : public QWidget
{
Q_OBJECT
public:
Ellipse(QWidget *parent = 0);
~Ellipse();
protected:
void paintEvent(QPaintEvent *event);
};
Ellipse.cppКод
Ellipse::Ellipse(QWidget *parent) : QWidget(parent)
{
}
Ellipse::~Ellipse()
{
}
void Ellipse::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setPen(QPen(Qt::black, 2, Qt::SolidLine, Qt::FlatCap));
painter.setBrush(QBrush(Qt::white, Qt::SolidPattern));
painter.drawEllipse(100, 50, 200, 200);
painter.drawEllipse(140, 110, 40, 40);
painter.drawEllipse(220, 110, 40, 40);
painter.setBrush(QBrush(Qt::black, Qt::SolidPattern));
painter.drawEllipse(155, 125, 10, 10);
painter.drawEllipse(235, 125, 10, 10);
painter.setBrush(QBrush(Qt::white, Qt::SolidPattern));
painter.drawEllipse(150, 200, 100, 5);
}
Widget.cppКод
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowTitle("Face");
setFixedSize(400,400);
Ellipse *p = new Ellipse;
connect(ui->pushButton,SIGNAL(clicked()),p,SLOT(repaint()));
}