簡體   English   中英

Qt中不會發出新的SIGNAL

[英]new SIGNAL in Qt won't be emitted

我已經將這段代碼編寫為具有QSlider和QLineEdit的QWidget,它們的值相互連接。 有兩個新的插槽將轉換其值並調用其他小部件以更改其值。 直到這里,一切都運轉良好。

但是我添加了一個新的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();
}

我是如此愚蠢,在sld中未聲明到達(),這是Windows中的信號,因此它不會從sld連接,應該是這樣的:

connect(this,SIGNAL(reached()),QApplication :: instance(),SLOT(quit()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM