0

私は、ユーザーが回答と確認ボタンを書き込む1行の編集で構成される単純なアプリケーションを持っています。答えが正しければ、簡単な図(緑/赤の円など)を描きたいと思います。3つのソースファイルがあります。メイン、フォーム(ここでは、ボタンからの信号をラインエディットからの回答に接続し、回答が正しいかどうかを判断します)、およびフィギュアを描画したい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..。

4

1 に答える 1

0

これを試すことができると思います:

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


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

しかし、'ui->' の後に figureWidget を表示するにはどうすればよいでしょうか? UI に静的に描画することはできません。

于 2012-10-07T13:44:06.183 に答える