Qt X11BypassWindowManager提示打开QFileDialog崩溃



我有一个QMainWindow,窗口标志设置为X11BypassWindowManagerHint。在该窗口中有一个CCD_ 3触发一个CCD_。当事件被触发时,肉桂会崩溃。当该标志被移除时,将不会发生崩溃。请注意,窗口必须始终保持在顶部,这就是为什么X11BypassWindowManagerHint是必须的。

你知道是什么原因导致了车祸吗?尚未在其他X11系统/窗口上进行测试。

我的配置:Linux薄荷17.1 x64与肉桂,Qt5.4

非常感谢!

更新1:这是代码:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ...
    Qt::WindowFlags flags = this->windowFlags();
    this->setWindowFlags(flags | Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint);
    ...
    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(openFileDialog()));
}
void MainWindow::openFileDialog(){
    QString file1Name = QFileDialog::getOpenFileName(this,
             tr("Open SRT File"), "/home", tr("SRT Files (*.srt)"));
    
}

更新2:当它崩溃时,会有一个系统对话框说";肉桂刚刚坠毁。您现在正以回退模式运行。是否要重新启动Cinnamon"请注意,应用程序没有崩溃并退出。相反,它正在运行,只是不在顶部,也不响应UI交互。

更新3:多亏了sashoam的建议,我现在可以从终端看到肉桂的输出了。按下按钮后,终端附加

窗口管理器警告:日志级别8:meta_Window_unminimize:assertion'!窗口->override_redirect失败的

窗口管理器警告:Buggy客户端发送了一条时间戳为-的_NET_ACTIVE_Window消息,用于0x20000b7

分段故障

我终于找到了答案。我必须感谢@sashoalm带领我完成调试过程,但我想这并不完全是肉桂的错误。

在打开文件调用:QFileDialog::getOpenFileName(this, tr("Open SRT File"), "/home", tr("SRT Files (*.srt)"));中,当我将this更改为0时,问题就解决了。具有Qt::X11BypassWindowManagerHint的窗口可能不能是对话框的父窗口。

相关内容

  • 没有找到相关文章

最新更新