5

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

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

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

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

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

- - 編集 - -

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

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

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

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

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

4

3 に答える 3

3

私が解決した方法は、(setTitleBarWidget を介して) QWidget サブクラスをタイトルバーとしてインストールする QDockWidget サブクラスを作成することでした。これにより、ドック ウィジェットが topLevelChanged、dockLocationChanged、visiblityChanged を起動したときに、タイトルバーのテキストの表示/非表示を制御できるようになりました。

これは、Qt がドッキング システム用のパブリック API の公開を拒否したという事実を回避するための大きなハックです。これらの制限により、カスタム ドッキングの実装に移行しました。

于 2014-07-22T14:18:58.913 に答える
1

テキストを表示したくない場合は、現在のテキストを保存した後に空のテキストに設定し、再度表示する場合は、保存された変数から復元します。

このあまり一般的ではないケースについては、API には何もないと思います。つまり、自分で行う必要があります。

さて、多くのウィジェットに対して行うのは面倒だと主張することができますが、一方で、単純なハッシュ定義またはインライン関数を記述して、この反復作業を行うことができます。これは、基本的にワンライナー呼び出しのみになります、とにかく状態を変更するときに使用する必要があります。

于 2014-07-21T13:11:48.947 に答える