我正在学习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();
}
它不起作用。每当我按下测试按钮时都没有任何反应。但如果我将信号槽连接更改为QObject::connect(testButton, SIGNAL(clicked(bool)), testLabel, SLOT(setVisible(bool)));
,则会使标签消失。
那么,为什么它不能处理信号“切换”。我猜的是,它无法找到那个信号。你们可以抛光吗?
答案 0 :(得分:3)
您需要添加:
testButton->setCheckable(true);
启用切换功能。
答案 1 :(得分:1)
问题是QPushButton
不会发出toggled(bool)
信号。只有可检查的小部件,例如QCheckBox
。
请参阅QAbstractButton::toggled
信号的第一行:
This signal is emitted whenever a checkable button changes its state.