我有一個的QMainWindow顯示了QDialog:無法連接的QMainWindow和QDialog的
CalibrationDialog d(this);
d.exec();
我的QMainWindow類有一個信號:
signals:
void PenOn(QPoint p);
而且QDialog的有槽:
public slots:
void on_PenON(QPoint p);
我試圖連接PenOn事件on_PenOn在兩個方面:
- 實例化了QDialog
void MainWindow::on_actionC_triggered()
{
appState = CALIBR;
CalibrationDialog d(this);
connect(this, SIGNAL(PenOn(QPoint)), &d,SLOT(on_PenOn(QPoint)));
d.exec();
}
- 在QDialog的構造
CalibrationDialog::CalibrationDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::CalibrationDialog)
{
ui->setupUi(this);
[...]
connect(parent, SIGNAL(PenOn(QPoint)), this,SLOT(on_PenOn(QPoint)));
}
無的這個作品:(。 我從另一個線程激活的MainWindow插槽發出PenOn信號。
我在做什麼錯?
不Qt的打印任何東西了,當您嘗試進行連接?它說什麼? (您可能需要建立在調試模式以獲得打印輸出。)我認爲這只是在第一時間問題的錯字,但我現在看到你申報你的插槽爲「on_PenON」(以一個大寫的最終N)和嘗試使用它作爲「on_PenOn」(小寫的最後n)。如果這與代碼中的相同,那就是問題所在,因爲信號/插槽區分大小寫。 – 2010-03-27 14:22:13
對不起,但我不記得,我沒有舊的代碼,我試圖用適當的功能再次做它,它不工作。我不記得任何錯誤消息(來自編譯器) - 一切都是在調試模式下完成的。 – bartek 2010-03-29 11:40:27
只是要清楚的事情,QT在調試模式下可當它試圖在運行程序*連接到信號*打印出一條消息,而不是當你編譯它。連接被視爲運行時事物,因此即使連接不正確,編譯也會成功。除此之外,我沒有想法。 – 2010-03-30 14:02:38