【发布时间】:2013-08-12 04:34:49
【问题描述】:
我已经写了这段代码 具有 QSlider 和 QLineEdit 的 QWidget 它们以其价值相互联系。有两个新的 SLOT 将转换它们的值并调用其他小部件来更改其值。 到这里为止,一切正常。
但是我添加了一个新的 SIGNAL,当值达到 80 时必须发出它。然后必须关闭 QAPPlication 的实例。这部分不起作用。为什么?
#include "windows.h"
#include <QSlider>
#include <QLineEdit>
#include <QGridLayout>
#include <QApplication>
windows::windows(QWidget *parent) :
QWidget(parent)
{
sld=new QSlider(Qt::Horizontal,this);
sld->setRange(0,100);
led= new QLineEdit(this);
QGridLayout *grid=new QGridLayout(this);
grid->addWidget(sld,0,0);
grid->addWidget(led,0,1);
connect(led,SIGNAL(textEdited(QString)),this,SLOT(setSlider(QString)));
connect(sld,SIGNAL(valueChanged(int)),this,SLOT(setLed(int)));
connect(sld,SIGNAL(reached()),QApplication::instance(),SLOT(quit()));
}
void windows::setSlider(QString value)
{
int intValue=value.toInt();
sld->setValue(intValue);
if(intValue>80)
emit reached();
}
void windows::setLed(int value)
{
QString Qvalue=QString::number(value);
led->setText(Qvalue);
if(value>80)
emit reached();
}
【问题讨论】:
-
bool 成功 = connect(sld,SIGNAL(reached()),QApplication::instance(),SLOT(quit()));并检查是否成功 == true?