2011-03-23 31 views
0

在我的qt手機應用程序中,我有一個列表。我有連接列表點擊到主窗口的插槽。QMessageBox segFaulting在Mainwindows插槽onlclick

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

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

現在,如果我把 'QMessageBox提示::信息(這一點, 「信息」, 「信息」,QMessageBox提示::好的,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的:: 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的::顯示qwidget_simulator.cpp 889 0x00833a26
19聲明QDialog :: EXEC qdialog.cpp 543 0x00c6060f
20 QMessageBoxPrivate :: showOldMessageBox qmessagebox.cpp 1906 0x00c7fdab
...

這是回溯。它在這裏做錯了什麼?

回答

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

你的信號,可是沒有相同的簽名您的插槽: 點擊(QModelIndex))=葛。 showMessage()= Slot。

把你的插槽變成:showMessage(QModelIndex)

+1

不這麼認爲。後來我將我的視圖從MainWindow改爲只擴展Qwidget的表單。現在整個事情沒有任何改變。插槽需要<=參數數量而不是信號。所以我不認爲這是問題。我想我已經在中心插件中添加了多個孩子。那就是爲什麼messagebox是在setparent上進行分割。 – 2011-03-24 05:57:28