我有一个的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