Я работаю над своим проектом из программирования, и мне нужно рисовать, например, круг каждый раз, когда нажимается кнопка с помощью QPainter. Это первая проблема, а вторая здесь заключается в том, что мне нужна некоторая информация, которая должна быть отправлена в функцию рисования, например, вектор int, и возможность рисовать столько кругов, так как в векторе есть элементы с радиусами самих элементов. Я нашел код, основанный на сигналах и слотах.
Отправитель:
public:
Listener(QObject *p = 0) : QObject(p) {
QTimer * t = new QTimer(this);
t->setInterval(200);
connect(t, SIGNAL(timeout()), this, SLOT(sendData()));
t->start();
}
signals:
void dataAvaiable(int, int);
public slots:
void sendData() {
emit dataAvaiable(qrand() % 200, qrand() % 200);
}
Получатель:
void receiveData(int x, int y) {
QPainter painter(this);
QPen pen(Qt::white, 5);
painter.setRenderHint(QPainter::HighQualityAntialiasing);
painter.setPen(pen);
QPoint point(x, y);
painter.drawEllipse(x, y, 100, 100);
data.append(point);
}
Само соединение в main. cpp
QObject::connect(&l, SIGNAL(dataAvaiable(int,int)), &w, SLOT(receiveData(int,int)));
Но код не Он подходит для моей конкретной задачи с кнопками и даже не хочет ничего рисовать, только любой круг. Тем не менее, в отладчике код выполняется правильно, а я относительно новичок в Qt и C ++, поэтому я не могу самостоятельно понять, в чем проблема и как решить мою задачу.
Может кто-нибудь, пожалуйста, сделайте минимум кода или просто объясните мне, в чем именно проблема? Нужно как можно скорее решить проблему. Спасибо.
Upd: подойдет любое возможное решение с QPainter или без него.