QT中的信号槽

SIGNAL SLOT in QT

本文关键字:信号 QT      更新时间:2023-10-16

我在VS2013中编写了一个简单的QT计算器。我用信号released()呼叫我的插槽,但是我的插槽不工作。也许我的信号从未触发。我是QT的新手,我不知道我做错了什么。

我的类有这样的属性:

class Calculator : public QMainWindow
{
Q_OBJECT
public:
    Calculator(QWidget *parent = 0);
    ~Calculator();
private slots:
    void Calculator::two();
private:
    QLabel *lable;  
    QPushButton *two_button;
    QString value;
    QString total;
    int fnum;
    int snum;
    bool addbool;
    bool subtractbool;
    bool multiplybool;
    bool devidebool;
};

这是我连接信号到插槽的代码行:

one_button = new QPushButton("2", this);
connect(two_button, SIGNAL(released()), this, SLOT(two()));

和我的位置是

void Calculator::two()
{
    value = value+"2";
    lable->setText(value);
}

我在插槽中设置了一个断点,但是它从来没有碰到过这个断点。

您应该检查connect函数的结果。如果您使用旧的信号/插槽语法,则需要以与connect相同的方式定义插槽,因此

// this seems to be a non-standard extension of MSVC
// doesn't even compile under gcc, clang
void Calculator::two(); 

应该成为

void two();

但是你应该使用Qt 5引入的语法:

connect(two_button, &QPushButton::released, this, &Calculator::two);

,这并不重要。