QT中的SIGNAL SLOT

Bab*_*ade 1 c++ qt signals slot

我在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;
};
Run Code Online (Sandbox Code Playgroud)

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

one_button = new QPushButton("2", this);

connect(two_button, SIGNAL(released()), this, SLOT(two()));
Run Code Online (Sandbox Code Playgroud)

我的插槽是

void Calculator::two()
{
    value = value+"2";
    lable->setText(value);
}
Run Code Online (Sandbox Code Playgroud)

我在我的插槽中放了一个断点,但它从未到达断点.

krz*_*zaq 7

你应该检查connect功能的结果.connect如果你使用旧的信号/插槽语法,你的插槽需要以你提供的方式定义,所以

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

应该成为

void two();
Run Code Online (Sandbox Code Playgroud)

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

connect(two_button, &QPushButton::released, this, &Calculator::two);
Run Code Online (Sandbox Code Playgroud)

它不重要.