[英]Segfault with QColorDialog in Qt5.7 and macOS
我是Qt的QColorDialog
,並在用戶單擊按鈕時嘗試顯示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錯誤,因此並不是真正可以直接回答的問題。
如評論中所述,您的代碼至少在Win10 Qt 5.7和Debian Testing Qt 5.6.1中有效。 此外,還提到僅QColorDialog
會出現問題,OP測試的其他對話框也可以工作。 因此結論是,這是Mac OSX和QColorDialog
特定問題。 這可能是在QT(最有可能)的錯誤,但理論上也可以在操作系統或編譯器工具鏈的bug。
要做的事情:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.