2016-11-14 5 views
1

Qt5.5 C++プログラムでは、QDockWidgetsを1つずつ含むさまざまなQDockWidgetsがあります。しかし、私は取り除くことができないウィジェットの周りに10ピクセルの境界線があります。ドッキング可能なウィンドウ内のQtのパディングとマージン

Screenshot (extraneous space marked in red)

次の試みは何も達成していないようでした:

ui->dockable->layout()->setMargin(0); 

ui->dockable->layout()->setSpacing(0); 

ui->dockable->layout()->setContentsMargins(0,0,0,0); 

ui->dockable->setContentsMargins(0,0,0,0); 

ui->dockable->setStyleSheet("margin: 0px; padding: 0px"); 

ui->dockable->setStyleSheet("QDockWidget{ border: 0px }"); 

this->layout()->setContentsMargins(0,0,0,0); 

問題を複製するには:

  • ファイル - >新規プロジェクト - > Qtのウィジェットアプリ
  • 編集フォームmainwindow.ui
  • ドラッグドックdockwidget
  • Dockwidget背景のコンテキストメニューにフォーム
  • ドラッグし、他のウィジェットへのウィジェット - >レイアウトし - のQt 5.7.0へ>垂直
  • は(Windows 7の)上記のようなスクリーンショットを与える必要があり

のアップグレード助けにならない。何か案は?

+0

私は取り除くことに成功していませんそれのどちらもしかし、少なくともmacOSの下には境界線がないようです... –

+0

投稿されたスクリーンショットを生成する正確なコードを投稿できますか?どのようにドッキングバーとウィジェットを作成するかを確認する。私はWin7の下でさえ、いくらかのマージンを見ない。 – jpo38

+0

ドッキングバーとウィジェットはQt Creatorのグラフィカルフォームエディタで作成され、mainwindow.uiを変更します。 – OJW

答えて

1

...

あなたが行う必要があります。

ui->dockable->widget()->layout()->setContentsMargins(0,0,0,0); 

ui->dockable->layout()は、変更する必要があるレイアウトではありません。QDockWidgetにはQWidget(メインウィジェットの一種、QDockWidgetが作成されたときに常に利用可能です)が含まれています。これはあなたのレイアウトがQtDesignerから作成されたものですので、QDockWidget::widget()を使用してアクセスする必要があります。あなたはQtDesignerからGUIを作成するよう

あるいは、また、あなたの余白を削除するには、このツールを使用することができ、それはGUIがそのように見えるようになります:

enter image description here

+0

これが答えです。 Qt Creatorのオブジェクトブラウザで「dockWidgetContents」を選択して、それらのpinkMappingプロパティを取得する必要があることを知っているだけです。 – OJW

+0

@OJW:true、それに応じて投稿を更新しました – jpo38

1

あなたが持っているものと望むものの写真を送信した場合は、助けが簡単になります。

QWidget* centralWidget = new QWidget(this); 
centralWidget->setStyleSheet("background: blue"); 
setCentralWidget(centralWidget); 

QDockWidget* dock1 = new QDockWidget("docking bar1", this); 
QWidget* widget1 = new QWidget(dock1); 
dock1->setWidget(widget1); 
widget1->setStyleSheet("background: red"); 

QDockWidget* dock2 = new QDockWidget("docking bar2", this); 
QWidget* widget2 = new QWidget(dock2); 
dock2->setWidget(widget2); 
widget2->setStyleSheet("background: green"); 

addDockWidget(Qt::LeftDockWidgetArea, dock1); 
addDockWidget(Qt::RightDockWidgetArea, dock2); 

青色中央ウィジェット+ 2つのドッキングバー、赤色に充填された一つの緑の他には、(参照することが容易になり:

は(QMainWindowで実行される)サンプルとコードのこの部分を書い境界:灰色の領域のままです)。

それは(意図的に緑色のドッキングバーをドッキング解除)ここでその(ミントOS)のように示しています

enter image description here

は緑色のバー灰色の境界線をドッキングドッキング解除を参照してください。 今、それをこのスタイルシートを適用します。

dock2->setStyleSheet("QDockWidget { \ 
          border: 0px \ 
            }"); 

次に、あなたはもう何の境界線を取得していない:

enter image description here

しかし、私はあなたの問題を解決することはよく分かりません。ドッキングバーの表示は実際にOSに依存しているため、スクリーンショットを投稿する必要があります。ドッキングバーが私のOS上にドッキングされているときに余裕がないが、おそらく1つしか表示されない(私のスクリーンショットの赤と青の間の灰色の縦線はマージンではなく、ドッキングのサイズを変更するために使用できるスライダーバー、私はあなたがこれを抑制しようとしているとは思わない)。あなたのポストを更新した後

関連する問題