我是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
答案 0 :(得分:0)
这是一个简短的答案,解释了一些事情,因为问题本身似乎是当前最新版本中的Qt错误,所以在SO上并不是真正直接回答。
如评论中所述,您的代码至少在Win10 Qt 5.7和Debian Testing Qt 5.6.1中起作用。另外,提到问题只发生在QColorDialog
,OP测试的其他对话框确实有效。所以结论是,这是一个Mac OSX和QColorDialog
具体问题。它可能是Qt中的一个错误(最有可能),但 理论上也可能是操作系统或编译器工具链中的错误。
要做的事情: