問題タブ [qdockwidget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
906 参照

qt5 - QDockWidget の開始サイズ

私は、それが単純な問題であるべきだと感じるものにやや行き詰まっています。

いくつかの QDockWidgets を備えた QMainWindow があります。QDockWidget (私のコードでは _tree_dock) は LeftDockWidgetArea で始まります。QTreeWidget (_tree_view) を含む QWidget (dockWidgetContents_2) が含まれています。実行時に問題なく QDockWidget のサイズを変更/移動できますが、プログラムの起動時に QDockWidget が少し小さすぎます。

QDockWidget をかなり縮小できるので、最小値 (200) ではないことがわかります。大きくすることもできるので、最大ではありません。Qt Designer を起動すると、幅は常に 258 になります。

いくつかのメソッドにデバッグ出力を入れたところ、幅が 200 から始まることがわかりました。次に、changeEvent(QEvent *) を呼び出すと、幅が突然 258 になりました。

changeEvent() Enter: ドックの幅は 200、イベントは 105

changeEvent() 終了: ドックの幅は 200 で、イベントは 105 です

changeEvent() Enter: ドックの幅は 258、イベントは 99

changeEvent() 終了: ドックの幅は 258 で、イベントは 99 です

出力を changeEvent の最初と最後の行に置きます。ドキュメントによると、これらのイベント コードは次のとおりです。

作成が完了すると、サイズが更新されると思いますか?QDockWidget と QTreeView で resize を呼び出してみましたが、何もしていないようです。または、258 へのサイズ変更によって単に上書きされているだけです。

幅を 265 程度にする必要があります。ツリー ビューの列の 1 つは、デフォルトで半分非表示になっています。これを行う「簡単な」方法がない場合は、代わりに最初の列をわずかに小さくすることもできます。

以下は、ドックを含む ui ファイルのセグメントです。


0 投票する
1 に答える
2391 参照

c++ - QDockWidget - フローティング時に境界線のないウィンドウ

Win 7、Qt 5.3

アプリケーションでa を使用しQDockWidgetます。意図したとおりに動作します。

setTitleBarWidget(new QWidget(this))ここで、デフォルトで構築されたウィジェットに設定して、タイトル バーを非表示にします。これは、Qt のドキュメントによると標準的な方法です。また、タイトルバーがなくなりました。

ウィジェットをウィンドウとしてドッキング解除するにはmyDockWidget->setFloating(true)、(自分のスロットで) を使用します。しかし、ウィジェットがドッキング解除されると、フローティング ウィンドウに境界線がなくなります (したがって、移動できなくなります)。

コメントアウトするsetTitleBarWidgetと、 もmyDockWidget->setFloating(true)機能します。そのため、元のタイトル バーには何らかのロジックが組み込まれているようです。しかし、ソースコードを見てみると、特別なことは見つかりませんでした。

問題を克服するために私ができることのヒントはありますか?

0 投票する
3 に答える
1982 参照

c++ - テキストを空の文字列に設定せずにQtタブのラベルテキストを非表示にします

QTabWidgetアイコンのみが必要です:

Qtでタブのラベルテキストを非表示にするにはどうすればよいですか? ""ドッキングされたウィジェット ( QDockWidget) を使用していて、ラベル テキストが自動的に設定されるため (ウィジェットがフローティングの場合は必要です) 、テキストを空の文字列 ( ) に設定できません。

しかし、タブモードでは、(タブの)アイコンを表示したいだけです。可能なアプローチ:

  1. フォント サイズを 0 にしますか?
  2. 独自のバー クラスを作成し、ここのようにペイント イベントをオーバーライドする必要があります。

もっと簡単/きれいですか?

- - 編集 - -

OK、「ウィンドウのタイトルを空の文字列に設定し、元のテキストにリセットする」アプローチが機能します。topLevelChangedこれには信号を使用しています。ただし、空のテキストがまだスペースを占有するため、いくつかの欠点があります。もう 1 つの問題は、テキストのツールチップが消えてしまい、元に戻すことができないことです。

まだいくらかのスペースが消費されています

私が現在試みているのは、「空っぽのテキスト」と Prasad Silva のアプローチの間の何かです。タブ内のテキスト ラベルを特定し、そのサイズを 0 に設定してからリセットしようとしました。少し異なりますが、テキストはそのまま保持されます。

ところで、タブの上に線が表示されますが、これが何であるか (どこから来たのか) わかりますか? 編集:これには「簡単な方法」(スタイルシート、属性)はないようです。QTabBarで最終行を隠すを参照してください

自動生成されたものは扱いにくいので、タブバー全体を自分で作成するかもしれません (これについては PS に同意します)。

0 投票する
1 に答える
1878 参照

c++ - フローティング サブ QMainWindow (メイン QMainWindow の子ウィジェットとしての QMainWindow)

main のQMainWindowとしてa を使用します。これにより、ドッキング可能なウィジェットに使用できる別の領域が得られます ( )。QMainWindowQDockWidget

次の投稿によると、これは問題ありません。私にとっても完全に機能します。

  1. https://qt-project.org/forums/viewthread/17519
  2. http://www.qtcentre.org/threads/12569-QMainWindow-as-a-child-of-QMainWindow

通常のウィジェットとして動作させるためにQMainWindow、ウィンドウ フラグの設定を解除します。このトリックは、上記の投稿の 1 つに記載されています。

QMainWindowここで、ドッキングされたすべてのウィジェットでこの子をフロートできるようにしたいと考えています。つまり、「通常のウィジェットにする」というステップを元に戻したいのです。残念ながら、これは機能しません。メイン ウィンドウからは消えていますが、まったく表示されません。

それを解決する方法はありますか?

関連: a , b

0 投票する
1 に答える
1777 参照

qt - 外部 QSS スタイルシート ファイルから QDockWidget に境界線を設定できません

QDockWidget外部QSSファイルを使用して罫線を追加したい。

これは私が持っているものです:

境界線のない QDockWidget

そして、これは私が欲しいものです:

ここに画像の説明を入力

私は使用してみました:

しかし、まったく機能しません。

デザイナーを右クリックしてQDockWidget選択し、ダイアログ内でChange stylesheet使用すると、すべて正常に機能します。border: 5px solid red;しかし、私は外部QSSファイルを使いたいです。

ウィジェットにファイルを添付して、QSS必要に応じて縁取りすることはできますか?

0 投票する
2 に答える
836 参照

c++ - QMainwindow のサイズを変更して Qdockwidget のサイズに合わせます

この中に aQMainWindowと a がQDockWidgetネストされています。

いくつかのグラフを表示すると、QDockWidget拡大されますが、QMainWindow初期サイズが維持されるため、マウスを使用してサイズを変更する必要があります。

では、毎回QMainWindowサイズを変更するにはどうすればよいですか?QDockWidget