2013-04-12 7 views
7

フロートされた(ドッキング解除された)QDockWidgetをフルスクリーンモードにしようとしています。 Windowsではすべてがまっすぐに見えます。 DWが浮いている場合()dw-> showFullscreenを呼び出す:例えば私は確認スロット内のカスタムスロットfloatingChanged()QDockWidget Ubuntuで動作していないshowFullscreen(gnome)

connect(dw, SIGNAL(topLevelChanged(bool)), this, SLOT(floatingChanged(bool))); 

にdockwidget(DW)のtopLevelChanged()信号を接続します。

void MainWindow::floatingChanged(bool floating) 
{ 
    if(floating) 
    { 
     QDockWidget* dw = static_cast<QDockWidget*>(QObject::sender()); 
     dw->showFullScreen(); 
    } 
} 

Windowsでは、ドッキング解除された(フローティング)QDockWidgetがドッキング解除後にフルスクリーンモードに直接切り替わります。しかし、linux(ubuntu 12.04、gnome-shell 3.4.1)ではこれは動作しません(qt 4.8.0)。ドックウィジェットはノーマルモードのままです。

(フローティング)QDockWidgetをフルスクリーンモードに切り替える方法がわかりません。これに関するあらゆる解決策は大歓迎です。実際、異なるOSはこの目的で異なる動作をしています。

私はすでに成功していないウェブを検索しています。これは私の最初の投稿です。 私はスペルミスのために私を許しませんか?私は母国語ではないスピーカー、thanx;)

p.s.私もオオカミのライオンズの行動を試みるつもりです。ところで、それを試してみるには、上記のfloatingChanged()スロットをQt exampleのMainWindowのhttp://qt-project.org/doc/qt-5.0/qtwidgets/mainwindows-mainwindow.htmlに実装し、それを既存のドックウィジェットのいずれかまたはMainWindow :: createDockWidget()メソッドの中に接続します。

+0

osx-lion on qt 4.8.2では、動作も異なります。ドックウィジェットは、dw-> showFullScreen()を呼び出した後、最大化されて表示されます。これは、タイトルバーが表示されていることを意味します。勝利XPは本当のフルスクリーン動作をしていました。そこでは、タイトルバーも欠席していました。これが、フルスクリーンモードで必要なものです。 – xam

+0

私は、スタイルシートを使用して一種の問題を発見しました。私はQt-Centerフォーラムで説明しました。[link](http://www.qtcentre.org/threads/54178-QDockWidget-showFullScreen%28%29-only-works-on-Windows)。 – xam

+0

[この最小の例](http://ideone.com/RIvk4C)は、あなたの設定で説明したように振る舞いますか?それは私の期待どおりに動作するようです。 – brunocodutra

答えて

2

この機能を呼び出すshowFullScreen()は、ウィンドウにのみ影響します。

フルスクリーンモードはWindowsではうまく動作しますが、Xでは一定の問題があります。これらの問題は、X11クライアントとウィンドウマネージャー間の通信を指定するICCCMプロトコルの制限によるものです。 ICCCMは、装飾されていないフルスクリーンウィンドウの概念を理解していません。したがって、境界線のないウィンドウを要求し、それを画面全体に塗りつぶしてサイズを変更することができます。ウィンドウマネージャによっては、これが動作する場合と動作しない場合があります。ボーダレスウィンドウはMOTIFヒントを使用して要求されます。ヒントは、ほとんどすべての現代のウィンドウマネージャによって少なくとも部分的にサポートされています。 代わりに、ウィンドウマネージャを完全にバイパスし、Qt :: X11BypassWindowManagerHintフラグを持つウィンドウを作成することもできます。キーボードのフォーカスが完全に壊れていたり、デスクトップの変更やユーザーが他のウィンドウを開くときに非常に奇妙な影響を受けるなど、これには他にも重大な問題があります。 最新のICCCM仕様に準拠するX11ウィンドウマネージャは、フルスクリーンモードを適切にサポートします。

関連する問題