Qt - 接收信号后绘图

时间:2012-10-07 12:07:50

标签: qt drawing signals

我有一个简单的应用程序,它包含一行编辑,用户可以在其中编写答案和确认按钮。如果答案是正确的,我想绘制一个简单的图形(例如绿色/红色圆圈)。我有三个源文件 - 主要,形式(这里我连接来自按钮的信号与lineedit的答案,并确定答案是否正确)和figureWidget,我想绘制我的数字。我的问题是,我无法找到如何将“形式”中的信号与我的figureWidget连接(特别是什么和什么地方:-))任何提示? file 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)。

1 个答案:

答案 0 :(得分:0)

我想你可以试试这个:

connect(this,SIGNAL(correctness(QString)),this, SLOT(drawFigure(QString)));


void Form::drawFigure(QString val)
{
   ui->figureWidget->drawFigure(val);
}

但是如何在'ui-&gt;'之后出现figureWidget?你无法静态地在UI上绘制它。