QT 中的信号槽
SIGNAL SLOT in QT
我用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
函数的结果。如果您使用的是旧的 signal/slot 语法,那么您的广告位需要按照向 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);
而且没关系。
我用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
函数的结果。如果您使用的是旧的 signal/slot 语法,那么您的广告位需要按照向 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);
而且没关系。