使用信号参数的Qt

使用信号参数的Qt,qt,int,qt-signals,Qt,Int,Qt Signals,我创建了一个信号,当用户在qlineedit字段中输入某个内容(一个数字)时会发出该信号,该信号通过一个参数(用户刚刚在字段中键入的数字)发出。我想用这个参数作为一个正则数(在变量中)。我正试图将那个信号参数添加到另一个数字中,但出现了一个错误“s1未声明”。下面是我在.h文件中的类和他在.cpp文件中的实现 .h文件 class fenetre: public QWidget { Q_OBJECT public: fenetre(); public slots: void c

我创建了一个信号,当用户在qlineedit字段中输入某个内容(一个数字)时会发出该信号,该信号通过一个参数(用户刚刚在字段中键入的数字)发出。我想用这个参数作为一个正则数(在变量中)。我正试图将那个信号参数添加到另一个数字中,但出现了一个错误“s1未声明”。下面是我在.h文件中的类和他在.cpp文件中的实现

.h文件

class fenetre: public QWidget
{
Q_OBJECT
public:
    fenetre();

public slots:
    void calc();
    void clearinput();

signals:
    void thesecond(int s1);

private:
    QPushButton *button1;
    QPushButton *button2;
    QPushButton *button3;
    QPushButton *button4;
    QPushButton *button5;
    QPushButton *result0;
    QPushButton *clear;
    QLineEdit *input1;
    //QLineEdit *inputsqrt;
    //QLineEdit *input2;
    //QLineEdit *result;
    //QLineEdit *square;
};
.cpp文件

QObject::connect(button1,SIGNAL(clicked()),this,SLOT(calc()));
    //QObject::connect(button2,SIGNAL(clicked()),this,SLOT(calc()));
    //QObject::connect(button3,SIGNAL(clicked()),this,SLOT(calc()));
    //QObject::connect(button4,SIGNAL(clicked()),this,SLOT(calc()));
    //QObject::connect(button5,SIGNAL(clicked()),this,SLOT(calc()));
    //QObject::connect(clear,SIGNAL(clicked()),this,SLOT(clearinput()));

    //QObject::connect(result0,SIGNAL(clicked()),this,SLOT(calc()));

    QObject::connect(result0,SIGNAL(thesecond(int)),this,SLOT(calc()));


}





void fenetre::calc()
{
    QString s=input1->text();
    bool ok;
   if(!input1->text().isEmpty())
   {
       int s1=s.toInt(&ok,10);
       emit thesecond(s1);
       input1->clear();
   }

   QObject* obj=sender();
   if(obj==result0)
   {
       int s2=s.toInt(&ok,10);
       int A=s2+thesecond(s1);
        input1->clear();
        QString c=QString::number(A);
        input1->setText(c);
   }
}

你的代码没有意义

calc()
不传递参数。在
calc()
中没有可供您使用的
s1
。您在第一个
if
语句中声明了一个,但由于它是在块中声明的,所以在块之后它就超出了范围。然后将信号用作返回类型的函数,这有点奇怪,因为信号本身是用
void
返回类型声明的。Qt中的信号可以返回值,但很少使用,它必须实际返回一个值才能工作

QPushButton
没有第二个(int s1)信号。最后一条连接语句失败。你甚至不检查它是否有

如果我们假设在上一次连接中,您想说的是
this
而不是
result0
,那么您最终得到的是一个连接到
calc()
的按钮,该按钮发出一个信号,连接到<代码>计算()再次

总之,您的代码在概念上是完全错误的,而且您似乎不知道自己在做什么。此外,您可能想了解一些正确的编码约定,因为这些代码非常糟糕

我建议你编辑这个问题,仔细解释你真正想要发生的事情,因为现在的情况,你的意图是一个谜。从你的其他问题来看,你肯定是在超越自己,在你尝试使用它之前,回去做更多的学习。如果你不知道自己在做什么,你的编程会很糟糕。偶尔犯错误和不知道自己在做什么有很大区别,前者是本网站的范围,后者不是