Я написал этот кусок кода
QWidget, который имеет QSlider и QLineEdit
Они связаны друг с другом своей ценностью. Есть два новых слота, которые преобразуют свои значения и будут вызывать другой виджет, чтобы изменить его значение.
пока здесь все работает отлично.
Но я добавил новый СИГНАЛ, который должен быть выпущен, когда значение достигает 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();
}
Я такой глупый,
достигаемый () не объявлен в sld, это СИГНАЛ в Windows, и тогда он не будет подключен из sld,
это должно быть так:
подключения (это, SIGNAL (достиг ()), QApplication :: экземпляр (), SLOT (бросить курить ()));
Других решений пока нет …