我想在我的用戶界面中插入一個複選框,它可以根據其選中狀態從另一個類設置布爾變量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