Qt 仅单击主Windows插槽中的QMessageBox segFaulting

Qt 仅单击主Windows插槽中的QMessageBox segFaulting,qt,qt4,nokia,Qt,Qt4,Nokia,在我的qt移动应用程序中,我有一个列表。我已将列表连接到主窗口的插槽 connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(showMessage())); void MainWindow::showMessage() { QMessageBox::information(this,"info","info",QMessageBox::Ok,0); } 现在,如果我把'QMessageBox::information(这是'info'

在我的qt移动应用程序中,我有一个列表。我已将列表连接到主窗口的插槽

connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(showMessage()));

void MainWindow::showMessage()
{
    QMessageBox::information(this,"info","info",QMessageBox::Ok,0);
}
现在,如果我把'QMessageBox::information(这是'info','info',QMessageBox::Ok,0);'在构造函数中,它起作用

否则会导致分割错误

0 QWidgetPrivate::setParent_sys qwidget_simulator.cpp 207 0x0083195e
1 QWidget::setParent QWidget.cpp 9985 0x00820784
2 QWidget::setParent QWidget.cpp 9942 0x00820508
3 QFocusFramePrivate::更新qfocusframe.cpp 72 0x00c337d1
4 QFocusFrame::setWidget QFocusFrame.cpp 231 0x00c340aa
5 QS60Style::事件QS60Style.cpp 3277 0x00b569e2
6 QApplicationPrivate::notify_helper qapplication.cpp 4415 0x007d84b6
7 QApplication::通知QApplication.cpp 3817 0x007d5f0f
8 QCoreApplication::notifyInternal QCoreApplication.cpp 732 0x6a1fe5bc
9 QCoreApplication::sendEvent QCoreApplication.h 215 0x00e3ac02
10 QApplicationPrivate::setFocusWidget qapplication.cpp 2210 0x007d316c
11 QWidget::setFocus QWidget.cpp 6288 0x00819c21
12 QApplication::setActiveWindow QApplication.cpp 2590 0x007d3df8
13 QWidget::ActivateWidget\u simulator.cpp 601 0x00832c02 14 QWidgetPrivate::show_sys qwidget_simulator.cpp 242 0x00831af4
15 QWidgetPrivate::show_helper qwidget.cpp 7380 0x0081c41d
16 QWidget::setVisible QWidget.cpp 7594 0x0081cbbe
17 QDialog::setVisible QDialog.cpp 739 0x00c60f78
18 QWidget::show QWidget_simulator.cpp 889 0x00833a26
19 QDialog::exec QDialog.cpp 543 0x00c6060f
20 QMessageBoxPrivate::showOldMessageBox qmessagebox.cpp 1906 0x00c7fdab
...


这是回溯。它在这里做错了什么?

插槽必须具有与信号相同的签名。无法将带有参数的信号连接到不需要参数的插槽。将
QModelIndex
参数添加到
showMessage()


插槽必须具有与信号相同的签名。无法将带有参数的信号连接到不需要参数的插槽。将
QModelIndex
参数添加到
showMessage()


您的信号与插槽的签名不同: 单击(QModelIndex))=信号。 showMessage()=插槽


将插槽设置为:showMessage(QModelIndex)

您的信号与插槽没有相同的签名: 单击(QModelIndex))=信号。 showMessage()=插槽


把你的槽变成:showMessage(QModelIndex)

别这么想。后来,我将我的视图从MainWindow更改为仅扩展Qwidget的表单。现在整个事情都在进行中,没有任何变化。插槽需要有,我不这么认为。后来,我将我的视图从MainWindow更改为仅扩展Qwidget的表单。现在整个事情都在进行中,没有任何变化。插槽需要有
connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(showMessage(QModelIndex)));

void MainWindow::showMessage(QModelIndex)
{
    QMessageBox::information(this,"info","info",QMessageBox::Ok,0);
}