問題タブ [qmdiarea]
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.
qt - MdiArea を使用して QMainWindow にログ テキストを表示する
QMainWindow をメイン ウィジェットとして Qt でアプリケーションを開発し、QMdieSubWindows を追加するために必要な Mdiarea を追加しました。
Qt Creator のようにロギング エリアを作成する方法を知りたいです。
私のログテキストは基本的に何が起こっているかです。として
オプティマイザを開始しました ... ファイルが保存されました ... ファイルがロードされていません ... など
QPlainTextEdit
aまたは aを追加することを考え、QTextEdit
それらにテキストを追加するだけです。
私は QMainWindow.cpp にこれを書きました:
しかし、これは QMainWindow のメニューにプレーンテキストを表示しています。
StatusBar の上、一番下に配置したいと思います。
私は今尋ねたい:
QPlainTextEdit
またはQTextEdit
:どちらが私の仕事に適していますか?テキストを追加するだけで、テキストを強調表示して色を付けることができます。Q(Plain)TextEdit
たとえば、下部の QtCreator で固定位置と固定幅で asを取得するにはどうすればよいですか?
MdiSubWindow を作成し、それにプレーンテキスト ウィジェットを追加して表示しようとしました。思い通りに機能し、テキストを追加できます。しかし、私はまだ下に固定することはできません。何か案は?
qt - QMdiArea: 最初のタブは正常に動作しますが、2 番目のタブのコンテンツが小さすぎます
状況:アプリケーションの中心的なウィジェットとして、タブモードのQMdiAreaがあります( QMdiAreaから継承したカスタムクラスにラップされています)。QMdiSubWindowを介して最初の QMdiSubWindow を追加してaddSubWindow()
も問題ありません。つまり、ウィンドウとその内容が最大化されて、QMdiAreaのすべてのスペースが占有されます。ただし、2 番目のサブ ウィンドウを追加するとすぐに、次の問題が発生します。
問題: 2 番目のウィンドウのコンテンツが表示されず、最初のウィンドウのコンテンツが表示され続けますが (2 番目のタブに視覚的にフォーカスがあるにもかかわらず)、サイズが縮小されます。数ピクセルしか占有しません。しかし、最初のサブウィンドウ/タブに戻って (サイズが縮小されたウィジェットをクリックして自動的に最大サイズに戻るか、最初のタブヘッダーを選択して) 2 番目をもう一度選択すると、すべて問題ありません = 2 番目のタブのウィジェット/エディターが表示され、最大化されます。
ただし、2 番目のタブを閉じるまでは、最初のタブのコンテンツが (予想どおり) 表示されますが、小さいサイズでしか表示されません!
スクリーンショット:
別の関連するテスト ケース: 最初のタブが作成され、期待どおりにフル サイズで表示されます。QMainWindow全体のサイズを単純に変更すると、タブのウィジェットの周りに突然かすかな境界線が表示されます。そのため、境界のある最大化モードと通常モードが混在した状態にあるように見えます。それは新しいリードを生み出しますか?
スクリーンショット:
私はこれまで明示的に定義されたレイアウトを使用していませんが、最初のタブが正常に機能し、手動で前後に切り替えた後に他のすべてのタブも同様に機能することを考えると、それがなくても機能するはずです.
明示的なレイアウト オブジェクトを設定する必要がありますか? 最初のタブでは機能するのに、2 番目のタブでは機能しないのはなぜですか?
ベースとしてのコード: これは、新しい子の追加を処理するカスタムQMdiAreaクラスで実行されるロジックです。
更新: N1ghtLight によって提案されたハックを追加しました。コーディングでそのようにマークされています。
更新 2:問題の説明を編集/修正 + スクリーンショット付きの新しいテスト ケース。
qt - QMDI サブウィンドウの切り替え
クラスが次のようなMDIアプリケーションがあります
GraphicsView への新しいポインターを作成するたびnewfile()
に、新しい mdiSubWindow を作成しています。MainWindow
のコンストラクターはGraphicsView
、新しい Scene を作成します。
複数のサブウィンドウが作成されると、以前のサブウィンドウで作業できなくなります。最新のサブウィンドウのみが期待どおりに機能します。たとえば。QGraphicsItems
以前のサブ ウィンドウではなく、最新のサブ ウィンドウでのみ描画できます。
使用する必要があると思いますactiveSubWindow()
が、すべてのサブウィンドウをタブの変更に応答させる方法がわかりませんでした。これをどのように実装すればよいですか?
python - QMdiArea サブウィンドウを閉じる/削除する正しい方法は?
QMdiArea で構成される MainWindow を含む PyQt 4 を使用して作成している単純なアプリケーションがあります。ユーザーが新しいセッション (新しい実験) を開始すると、2 つのウィンドウが生成されます。ユーザーは、実行する分析モジュールのリストから選択することもできます。
ウィンドウの複製を許可したくありません (つまり、以下のコード例では、ユーザーは 1 つの file_tree_window、1 つの data_plot_window、および/または 1 つの cell_monitor_window しか持つことができません)。
したがって、たとえば、ユーザーが「新しい実験」を 1 回選択すると、2 つのウィンドウが生成されます。その後、再度「新しい実験」を選択すると、元の 2 つのウィンドウが閉じられ、新しい 2 つのウィンドウが開かれます。どの「分析モジュール」も同様です。(つまり、既に開いているものを選択すると、開いているものが閉じられ、新しいものが開きます)。
ただし、この機能の生成に問題があります。
まず、コード:
これはいくつかの点でうまくいきません:
- 「Cell Health Monitor」ウィンドウを開いて閉じ、再度開こうとすると、Python がクラッシュする
- 「Cell Health Monitor」ウィンドウを開いてから「New Experiment」を開始しようとした後、「Cell Health Monitor」ウィンドウを開こうとすると、Python がクラッシュします。
close() の代わりに remove() を使用しようとしました:
すなわち:
一連のアクションに応じて、Python がクラッシュするか、次の 2 つのエラー メッセージのいずれかが表示されます。
(これは実際には単なる警告です):
また
これらの問題を発生させずにサブウィンドウを削除するにはどうすればよいか、私は途方に暮れています。
ありがとう
python-2.7 - QMdiSubWindow を QMdiArea QMainWindow に配置するにはどうすればよいですか?
私はpyqtが初めてです。メニューバーとメニュー項目を備えた Qmainwindow でアプリケーションを実行したいと考えています。メニュー項目をクリックすると、QMdiSubWindow が qmdiarea に表示されます。これは私のqmainwindowコードです:
これは私の QMdiSubWindow コードです:
前もって感謝します
更新: actionFriends_click 関数を次のように変更しました。
更新 2: 忘れていました。Ui_mainForm に参照を追加する必要があります
この場合、QMdiSubWindows Ui_friendForm クラスは VIEW パッケージにあります。
qt - QMdiSubWindow を最大化した後、次に選択する QMdiSubWindow も最大化されます。どうすればこれを止めることができますか?
編集:
これはバグだと思いました。実際には、Qt のドキュメントで説明されているように (完全に埋め込まれているように) デフォルトの動作です...
質問:
に複数QMdiSubWindow
の がありQMdiArea
、一部が「最前面に表示」にフラグ付けされている場合、それらは「最大化」ウィンドウと奇妙に相互作用します。つまり、ウィンドウが最大化され、その上にレンダリングされた他のサブウィンドウがまだある場合、奇妙な動作が発生します。
「Stay on Top」ウィンドウのいずれかをクリックまたは操作すると、ウィンドウが最大化され、最大化されたウィンドウが復元されます。
これまでのところ、あるウィンドウの状態を別のウィンドウで追跡する方法を理解できないようです。ソース コードはごちゃごちゃで、使用しているプライベート クラス モデルは非常に混乱しており、実装とのやり取りは基本的に不可能です。うまく。また、動作を説明するドキュメントには何も見つかりませんでした。
この動作を示す最小限のプロジェクトは次のとおりです。
main.cpp
メインウィンドウ.h
メインウィンドウ.cpp
メインウィンドウ.ui
c++ - QMdiSubWindow を現在の QStackedLayout に追加
だから私はこのコードを持っています:
何らかの理由で動作しません。私がやりたいのは、レイアウトに表示されているウィジェットを取得することです-QMdiAreaとして、それにサブウィンドウを追加します。
PS これは完全なアプリの簡略化されたバージョンです。サブウィンドウを mdi1 に直接追加しても機能しますが、探しているものではありません (QStackedLayout には多くの QMdiArea があるため)。