我有一个简单的应用程序,它由一行编辑组成,用户在其中编写答案和确认按钮。如果答案是正确的,我想画一个简单的图形(例如绿色/红色圆圈)。我有三个源文件 - 主文件、表单(这里我将来自按钮的信号与来自 lineedit 的答案连接起来并确定答案是否正确)和 figureWidget,我想在其中绘制我的图。我的问题是,我不知道如何将来自“表单”的信号与我的 figureWidget 连接起来(尤其是什么和在哪里:-))有什么提示吗?文件form.cpp:
#include <QtCore>
#include "ui_untitled.h"
#include "Form.h"
#include "figureWidget.h"
Form::Form(QWidget * parent, Qt::WindowFlags f) : QWidget ( parent,f ) {
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(buttonPressed()), this, SLOT(checkAnswer()))
//this checks if answer is correct after pushing button
connect(this,SIGNAL(correctness(QString)),ui.figureWidget, SLOT(drawFigure(QString)));
//I expect signal from this class (here I check the answer), and draw the circle in figureWidget
}
void Form::checkAnswer() {
if (ui.lineEdit == "1") emit correctness(QString("right");
else emit correctness(QString("false")
}
然后我有figureWidget.cpp:
#include <QtGui>
#include <iostream>
#include "figureWidget.h"
figureWidget::figureWidget(QWidget* parent) : QWidget(parent) {
}
figureWidget::~figureWidget() {
}
void figureWidget::drawFigure(QString newVal) {
if (newVal == correctVal)
update();
}
void figureWidget::paintEvent(QPaintEvent* ) {
QPainter painter(this);
painter.setPen(QRgb(0x0000ff00));
painter.drawEllipse(0, 0, 10, 10);
}
在调试中我得到:没有这样的插槽 QWidget::drawFigure(QString) in ...