Qt4 插槽函数未被调用

Qt4 插槽函数未被调用,qt4,signals-slots,Qt4,Signals Slots,我正在学习QT并尝试一些例子 我试图创建一个对话框,当按下按钮时,标签消失,当再次按下同一按钮时,标签出现 下面是代码 #include <QApplication> #include <QPushButton> #include <QLabel> #include <QDialog> #include <QObject> #include <QHBoxLayout> int main(int argc, char **

我正在学习QT并尝试一些例子

我试图创建一个对话框,当按下按钮时,标签消失,当再次按下同一按钮时,标签出现

下面是代码

#include <QApplication>
#include <QPushButton>
#include <QLabel>
#include <QDialog>
#include <QObject>
#include <QHBoxLayout>

int main(int argc, char ** argv)
{
   QApplication app(argc, argv);
   QDialog *dialog = new QDialog;
   QPushButton *testButton = new QPushButton(QObject::tr("test"));   
   QLabel * testLabel = new QLabel (QObject::tr("test"));
   QHBoxLayout * layout = new QHBoxLayout;
   layout->addWidget(testButton);
   layout->addWidget(testLabel);
   QObject::connect(testButton, SIGNAL(toggled(bool)), testLabel, SLOT(setVisible(bool)));
   dialog->setLayout(layout);
   dialog->show();
   return app.exec();
}
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,字符**argv)
{
QApplication应用程序(argc、argv);
QDialog*dialog=新建QDialog;
QPushButton*testButton=新的QPushButton(QObject::tr(“测试”));
QLabel*testLabel=新的QLabel(QObject::tr(“test”);
QHBoxLayout*布局=新的QHBoxLayout;
布局->添加小部件(测试按钮);
布局->添加小部件(testLabel);
QObject::connect(测试按钮、信号(切换(bool))、测试标签、插槽(setVisible(bool));
对话框->设置布局(布局);
对话框->显示();
返回app.exec();
}
它不起作用。每当我按下测试按钮,什么都不会发生。但是如果我将信号插槽连接更改为
QObject::connect(testButton,signal(clicked(bool)),testLabel,slot(setVisible(bool))它使标签消失

那么,为什么它不与信号“切换”一起工作呢。我猜测的是,它无法找到那个信号。你们能给我点颜色看看吗?

你们需要添加:

testButton->setCheckable(true);
要启用切换,您需要添加:

testButton->setCheckable(true);

启用切换。

问题在于
QPushButton
不会发出
切换(bool)
信号。只有可检查的小部件,如
QCheckBox

请参见
QAbstractButton::toggled
信号的第一行:

This signal is emitted whenever a checkable button changes its state.

问题是
QPushButton
不会发出
切换(bool)
信号。只有可检查的小部件,如
QCheckBox

请参见
QAbstractButton::toggled
信号的第一行:

This signal is emitted whenever a checkable button changes its state.