Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt-接收信号后的绘图_Qt_Drawing_Signals - Fatal编程技术网

Qt-接收信号后的绘图

Qt-接收信号后的绘图,qt,drawing,signals,Qt,Drawing,Signals,我有一个简单的应用程序,它由一行编辑组成,用户在其中编写答案和确认按钮。如果答案是正确的,我想画一个简单的图形(例如绿色/红色圆圈)。我有三个源文件-main、form(这里我连接按钮的信号和lineedit的答案,并确定答案是否正确)和figureWidget,我想在其中绘制我的图形。我的问题是,我找不到如何将“form”的信号与figureWidget(特别是what和where:-)连接有什么提示吗? 文件form.cpp: #include <QtCore> #include

我有一个简单的应用程序,它由一行编辑组成,用户在其中编写答案和确认按钮。如果答案是正确的,我想画一个简单的图形(例如绿色/红色圆圈)。我有三个源文件-main、form(这里我连接按钮的信号和lineedit的答案,并确定答案是否正确)和figureWidget,我想在其中绘制我的图形。我的问题是,我找不到如何将“form”的信号与figureWidget(特别是what和where:-)连接有什么提示吗? 文件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") 
  }
#包括
#包括“ui_untitled.h”
#包括“表格h”
#包括“figureWidget.h”
Form::Form(QWidget*父项,Qt::WindowFlags f):QWidget(父项,f){
ui.setupUi(这个);
连接(ui.button,信号(buttonPressed()),此,插槽(checkAnswer())
//按下按钮后检查答案是否正确
连接(此、信号(正确性(QString))、ui.figureWidget、插槽(drawFigure(QString));
//我期望从这个类中得到信号(这里我检查答案),并在figureWidget中画出圆圈
}
void Form::checkAnswer(){
如果(ui.lineEdit==“1”)发出正确性(QString(“右”);
else发出正确性(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);
} 
#包括
#包括
#包括“figureWidget.h”
figureWidget::figureWidget(QWidget*parent):QWidget(parent){
}
figureWidget::~figureWidget(){
}
void figureWidget::drawFigure(QString newVal){
if(newVal==correctVal)
更新();
}
void figureWidget::paintEvent(QPaintEvent*){
油漆工(本);
画师设置笔(QRgb(0x0000ff00));
画家的抽屉(0,0,10,10);
} 
在调试中,我得到:
在…中没有这样的插槽QWidget::drawFigure(QString)

我想你可以试试这个:

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


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

但是,如何计算Widget在“ui->”之后出现?您不能静态地在ui上绘制它。

-很抱歉,您的问题非常模糊。您将信号连接到插槽,就这样。如果您的代码不能按预期工作,请显示该代码,以便人们可以帮助您找出问题所在。对不起,我希望至少有人能理解我的意思(可能是常见问题)。无论如何,我添加了代码Where is
checkAnswer
?在哪里发出
正确性
信号?checkAnswer在form.cpp中(连接在哪里)。这个插槽也发出正确性信号我不理解你的问题。插槽没有被调用吗?