Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Рисование в Qt
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Buratino
В программе есть два класса, основной 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()));
}
Lerk
Может стоит начать с явного объявления соответствующих сигналов и слотов?

На данный момент виджет есть, а сцены нет.

Я в свое время делал примерно так:

в мейне:
Код
    ui->setupUi(this);
    scene = new MyScene(this);
....
ui->graphicsView->setScene(scene);


Код
scene->addItem(p);

....
scene->update();
ui->graphicsView->update();
Buratino
Цитата
На данный момент виджет есть, а сцены нет.

мне тут про layout подсказали, что его следует поместить на главный виджет и уже в него вставить тот, в котором будет что-то рисоваться, очень похоже по смыслу на Вашу сцену
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.