簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM