問題タブ [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.
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 ファイルのセグメントです。
c++ - QDockWidget - フローティング時に境界線のないウィンドウ
Win 7、Qt 5.3
アプリケーションでa を使用しQDockWidget
ます。意図したとおりに動作します。
setTitleBarWidget(new QWidget(this))
ここで、デフォルトで構築されたウィジェットに設定して、タイトル バーを非表示にします。これは、Qt のドキュメントによると標準的な方法です。また、タイトルバーがなくなりました。
ウィジェットをウィンドウとしてドッキング解除するにはmyDockWidget->setFloating(true)
、(自分のスロットで) を使用します。しかし、ウィジェットがドッキング解除されると、フローティング ウィンドウに境界線がなくなります (したがって、移動できなくなります)。
コメントアウトするsetTitleBarWidget
と、 もmyDockWidget->setFloating(true)
機能します。そのため、元のタイトル バーには何らかのロジックが組み込まれているようです。しかし、ソースコードを見てみると、特別なことは見つかりませんでした。
問題を克服するために私ができることのヒントはありますか?
c++ - テキストを空の文字列に設定せずにQtタブのラベルテキストを非表示にします
QTabWidget
アイコンのみが必要です:
Qtでタブのラベルテキストを非表示にするにはどうすればよいですか? ""
ドッキングされたウィジェット ( QDockWidget
) を使用していて、ラベル テキストが自動的に設定されるため (ウィジェットがフローティングの場合は必要です) 、テキストを空の文字列 ( ) に設定できません。
しかし、タブモードでは、(タブの)アイコンを表示したいだけです。可能なアプローチ:
- フォント サイズを 0 にしますか?
- 独自のバー クラスを作成し、ここのようにペイント イベントをオーバーライドする必要があります。
もっと簡単/きれいですか?
- - 編集 - -
OK、「ウィンドウのタイトルを空の文字列に設定し、元のテキストにリセットする」アプローチが機能します。topLevelChanged
これには信号を使用しています。ただし、空のテキストがまだスペースを占有するため、いくつかの欠点があります。もう 1 つの問題は、テキストのツールチップが消えてしまい、元に戻すことができないことです。
私が現在試みているのは、「空っぽのテキスト」と Prasad Silva のアプローチの間の何かです。タブ内のテキスト ラベルを特定し、そのサイズを 0 に設定してからリセットしようとしました。少し異なりますが、テキストはそのまま保持されます。
ところで、タブの上に線が表示されますが、これが何であるか (どこから来たのか) わかりますか? 編集:これには「簡単な方法」(スタイルシート、属性)はないようです。QTabBarで最終行を隠すを参照してください
自動生成されたものは扱いにくいので、タブバー全体を自分で作成するかもしれません (これについては PS に同意します)。
c++ - フローティング サブ QMainWindow (メイン QMainWindow の子ウィジェットとしての QMainWindow)
main の子QMainWindow
としてa を使用します。これにより、ドッキング可能なウィジェットに使用できる別の領域が得られます ( )。QMainWindow
QDockWidget
次の投稿によると、これは問題ありません。私にとっても完全に機能します。
- https://qt-project.org/forums/viewthread/17519
- http://www.qtcentre.org/threads/12569-QMainWindow-as-a-child-of-QMainWindow
通常のウィジェットとして動作させるためにQMainWindow
、ウィンドウ フラグの設定を解除します。このトリックは、上記の投稿の 1 つに記載されています。
QMainWindow
ここで、ドッキングされたすべてのウィジェットでこの子をフロートできるようにしたいと考えています。つまり、「通常のウィジェットにする」というステップを元に戻したいのです。残念ながら、これは機能しません。メイン ウィンドウからは消えていますが、まったく表示されません。
それを解決する方法はありますか?
qt - 外部 QSS スタイルシート ファイルから QDockWidget に境界線を設定できません
QDockWidget
外部QSS
ファイルを使用して罫線を追加したい。
これは私が持っているものです:
そして、これは私が欲しいものです:
私は使用してみました:
しかし、まったく機能しません。
デザイナーを右クリックしてQDockWidget
選択し、ダイアログ内でChange stylesheet
使用すると、すべて正常に機能します。border: 5px solid red;
しかし、私は外部QSS
ファイルを使いたいです。
ウィジェットにファイルを添付して、QSS
必要に応じて縁取りすることはできますか?
c++ - QMainwindow のサイズを変更して Qdockwidget のサイズに合わせます
この中に aQMainWindow
と a がQDockWidget
ネストされています。
いくつかのグラフを表示すると、QDockWidget
拡大されますが、QMainWindow
初期サイズが維持されるため、マウスを使用してサイズを変更する必要があります。
では、毎回QMainWindow
サイズを変更するにはどうすればよいですか?QDockWidget