我想在我的用户界面中插入一个复选框,它可以根据其选中状态从另一个类设置布尔变量true或false。问题在于信号没有被发射。为什么QCheckBox的信号没有发射?
变量将在我的第一类(renderarea.h)的报头文件作为
public: bool selectionMode;
限定该狭槽在第二类的头文件为void
protected slots: void setSelectionMode(bool mode);
而信号定义连接到我的第二类源文件在构造函数中的插槽为:
PaintWidget::PaintWidget(QWidget *parent) : QWidget(parent), ui(new Ui::PaintWidget) { connect(ui->selectionModeCheckBox, SIGNAL(toggled(bool)), this, SLOT(setSelectionMode(bool))); } void PaintWidget::setSelectionMode(bool mode) { ui->displayWidget->selectionMode = mode; QMessageBox msgbox; if (ui->displayWidget->selectionMode == true) msgbox.setText("selection mode is true"); else msgbox.setText("selection mode is false"); }
我在这里使用QMessageBox仅用于测试原因。但是在调试时我发现信号没有被发射。我究竟做错了什么?
一个简单的问题,你可以使你的连接无效,并检查在调试输出你得到正确的错误信息(类似qt :: connect不可能连接) – Fezvez 2011-06-15 16:13:57
我没有得到任何错误消息。这就是为什么我在这里问。我不明白为什么信号不发光。 – schmimona 2011-06-15 18:01:39
在你的ParentWidget类中,你有Q_OBJECT宏吗?这可能会导致连接问题的一些古怪。 – 2011-06-15 20:28:52