在Qt5.7和macOS中使用QColorDialog进行Segfault

时间:2016-09-29 15:41:33

标签: c++ qt segmentation-fault

我是Qt的新手,并在用户点击按钮时尝试显示null

当我运行程序并单击按钮时,我会出现颜色对话框。我可以打开它并尽可能多地关闭它,但当我退出应用程序时,我得到一个段错误 但是,如果我运行我的应用程序并且没有单击该按钮(以便不显示颜色对话框),我可以在没有segfault的情况下退出它。
下面的代码是如何触发崩溃的最小例子。

我正在运行macOS 10.12和Qt5.7。

你们中谁都知道如何解决这个问题?

QColorDialog

mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QtWidgets> class MainWindow : public QMainWindow { Q_OBJECT QPushButton *button; public: MainWindow(QWidget *parent = 0); private slots: void getUserColor(); }; #endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h" MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) { button = new QPushButton("Choose your color"); setCentralWidget(button); connect(button, SIGNAL(clicked(bool)), this, SLOT(getUserColor())); } void MainWindow::getUserColor() { QColorDialog::getColor(); }

main.cpp

1 个答案:

答案 0 :(得分:0)

这是一个简短的答案,解释了一些事情,因为问题本身似乎是当前最新版本中的Qt错误,所以在SO上并不是真正直接回答。

如评论中所述,您的代码至少在Win10 Qt 5.7和Debian Testing Qt 5.6.1中起作用。另外,提到问题只发生在QColorDialog,OP测试的其他对话框确实有效。所以结论是,这是一个Mac OSX和QColorDialog具体问题。它可能是Qt中的一个错误(最有可能),但 理论上也可能是操作系统或编译器工具链中的错误。

要做的事情: