【发布时间】:2020-05-05 21:06:17
【问题描述】:
我正在从编程开始我的项目,例如,每次使用 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++ 还比较陌生,所以我无法自己弄清楚问题出在哪里以及如何解决我的任务。
有人可以做最少的代码吗或者简单地向我解释,问题到底出在哪里?需要尽快解决问题。谢谢。
更新:无论有没有 QPainter,任何可能的解决方案现在都很好。
【问题讨论】: