在我的qt移动应用程序中,我有一个列表。我已将连接列表点击到主窗口的插槽中。
connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(showMessage()));
void MainWindow::showMessage()
{
QMessageBox::information(this,"info","info",QMessageBox::Ok,0);
}
现在,如果我输入'QMessageBox :: information(this,“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 :: update qfocusframe.cpp 72 0x00c337d1
4 QFocusFrame :: setWidget qfocusframe.cpp 231 0x00c340aa
5 QS60Style :: event qs60style.cpp 3277 0x00b569e2
6 QApplicationPrivate :: notify_helper qapplication.cpp 4415 0x007d84b6
7 QApplication :: notify 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 :: activateWindow qwidget_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
......
这是回溯。它在这里做错了什么?
答案 0 :(得分:3)
插槽必须与信号具有相同的签名。您无法将带有参数的信号连接到期望无效的插槽。将QModelIndex
参数添加到showMessage()
:
connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(showMessage(QModelIndex)));
void MainWindow::showMessage(QModelIndex)
{
QMessageBox::information(this,"info","info",QMessageBox::Ok,0);
}
答案 1 :(得分:1)
您的信号与插槽的签名不同: clicked(QModelIndex))= Singal。 showMessage()= Slot。
将您的广告位变为:showMessage(QModelIndex)