gpt4 book ai didi

c++ - QT 中的信号槽

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:24 25 4
gpt4 key购买 nike

我用VS2013写了一个简单的QT计算器。我使用信号 released() 来调用我的插槽,但我的插槽不起作用。也许我的信号从未触发过。我是QT的新手,我不知道我做错了什么。

我的类(class)有这个属性:

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);

这并不重要。

关于c++ - QT 中的信号槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com