QMessageBox segFaulting in Mainwindows slot onlclick

发布于 2024-10-25 04:13:24 字数 1782 浏览 3 评论 0原文

在我的 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::更新 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::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::显示 qwidget_simulator.cpp 889 0x00833a26
19 QDialog::exec qdialog.cpp 543 0x00c6060f
20 QMessageBoxPrivate::showOldMessageBox qmessagebox.cpp 1906 0x00c7fdab
...

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

In my qt mobile app I have a list. I have connected list clicked to a slot of main window.

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

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

Now if i put 'QMessageBox::information(this,"info","info",QMessageBox::Ok,0);' in constructor it works.

else it gives segmentation fault.

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
...

this is the backtrace. what am it doing wrong here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光无声 2024-11-01 04:13:24

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

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

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

The slot has to have the same signature as the signal. You can't connect a signal taking a parameter to a slot that's expecting none. Add that QModelIndex parameter to showMessage():

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

void MainWindow::showMessage(QModelIndex)
{
    QMessageBox::information(this,"info","info",QMessageBox::Ok,0);
}
习ぎ惯性依靠 2024-11-01 04:13:24

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

将您的插槽更改为:showMessage(QModelIndex)

Your signal doesnt have the same signature as your slot:
clicked(QModelIndex)) = Singal.
showMessage() = Slot.

Turn your slot to be: showMessage(QModelIndex)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文