QColorDialog在Qt5.7和macOS中的段错误
Segfault with QColorDialog in Qt5.7 and macOS
我是Qt的新手,并试图在用户单击按钮时显示QColorDialog
。
当我运行程序并单击按钮时,我得到颜色对话框出现。我可以随心所欲地打开和关闭它,但是当我退出应用程序时,我得到一个段错误。
然而,如果我运行我的应用程序,不点击按钮(使颜色对话框不显示),我可以退出它没有段错误。
下面的代码是一个如何触发崩溃的最小示例。
我正在运行macOS 10.12和Qt5.7.
你们中有人知道如何解决这个问题吗?
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
:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
这是一个简短的回答,解释了一些事情,因为问题本身似乎是当前最新发布版本中的Qt错误,因此不能直接在so中回答。
正如评论中所说,你的代码至少在Win10 Qt 5.7和Debian测试Qt 5.6.1下工作。另外,上面提到的问题只发生在QColorDialog
上,OP测试的其他对话框都可以工作。所以结论是,这是Mac OSX和QColorDialog
特有的问题。它可能是Qt中的一个bug(最有可能),但是理论上也可能是操作系统或编译器工具链中的bug。
待办事项:
- 学习如何调试到Qt源代码。
- 搜索是否已经报告了相关的bug,如果没有,考虑写一个bug报告,包括你的例子,以及确切的平台信息。这将是有帮助的,如果你能得到一个良好的堆栈跟踪,包括Qt库(见上面的要点如何)。
相关文章:
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 如何摆脱C ++中的分段错误错误?
- Clang 8 带有静态 constexpr 和数组的链接器错误 - 错误是什么以及如何解决它?
- 为什么每当我尝试运行此链接列表删除功能时都会收到分段错误错误?
- 如何解决分段错误错误C++
- 作为参数模板的模板类:MSVC 错误 - 错误 C2977:模板参数过多 (C++98)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 卷曲给出分段错误错误
- 无法访问 Arduino 结构字段。错误"退出状态 1。xxxx 不命名类型"
- 错误错误 C2872:"布尔值":kinect.h 的不明确符号
- C++打印模板容器错误(错误:"运算符<<"的不明确重载)理解?
- 结构的分割错误错误
- 为什么此代码返回分段错误错误?
- 错误错误:无法编译内置功能
- 分段错误错误C++
- C++ 1Z 错误:错误:演绎指南中声明中的显式限定
- 使用对数据类型的向量的哈希表中的分段错误错误
- 为什么此代码会导致分段错误错误
- JNA结构字段值错误
- C++段故障错误