我是QT的新手,正在尝试创建一个自定义信号,告诉我已插入可移动磁盘。
这就是我所做的
MainWindow.h
class MainWindow
{
QOBJECT
..
..
signals:
void qm_diskInserted(QString &);
public slots:
void addItemToList(QString &);
...
}
MainWindow.cpp
void MainWindow::onDeviceChange(MSG * msg)
{
//code for detecting device here
QString &driveLetter= getDriveLetter(mask);
//try to emit QT signal here
emit qm_diskInserted(driveLetter);
}
MainWindow::MainWindow(QWidget * parent=NULL)
{
ui.setupUi(this);
QObject::connect(this, SIGNAL(qm_diskInserted(QString&)), this, SLOT(addItemToList(QString &));
}
void MainWindow::addItemToList(QString &)
{
//more stuff here
}
不知何故不调用插槽 addItemToList(),我必须手动调用它。
我究竟做错了什么?
谢谢。
PS:
顺便问一下,有什么调试信号的方法吗?
即我如何确定发出信号?
最佳答案
如果出现连接问题,请始终确保检查控制台以获取有关连接失败的消息。由于Qt直到运行时才知道连接是否有意义,因此它会通知您那里的故障。您可能会认为它会崩溃,但是它只是在控制台中悄悄地说了这些话。
使用Qt,始终观看控制台是有意义的。 Qt会打印出各种错误消息,这些错误消息可以在您遇到问题时提供帮助。