QMainWindow
Windows フラグを に設定していますX11BypassWindowManagerHint
。QPushButton
をトリガーするウィンドウにがありますQFileDialog
。イベントがトリガーされると、cinnamon がクラッシュします。フラグが削除されると、クラッシュは発生しません。ウィンドウは常に上にある必要があることに注意してくださいX11BypassWindowManagerHint
。
クラッシュの原因は何ですか?他の X11 システム / Windows ではまだテストされていません。
私の設定:Linux Mint 17.1 x64 with Cinnamon、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 がクラッシュしました。現在、フォールバック モードで実行しています。Cinnamon を再起動しますか?」というシステム ダイアログが表示されます。アプリケーションがクラッシュして終了しないことに注意してください。代わりに、それは実行されていますが、最上位ではなく、UI インタラクションに応答していません。
更新 3: sashoalm の提案のおかげで、端末から Cinnamon の出力を確認できるようになりました。ボタンが押された後、端末が追加されます
ウィンドウ マネージャーの警告: ログ レベル 8: meta_window_unminimize: アサーション '!window->override_redirect' が失敗しました
ウィンドウ マネージャーの警告: バグのあるクライアントが、タイムスタンプが 0x20000b7 の _NET_ACTIVE_WINDOW メッセージを送信しました
セグメンテーション違反