問題タブ [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.

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

qt - MdiArea を使用して QMainWindow にログ テキストを表示する

QMainWindow をメイン ウィジェットとして Qt でアプリケーションを開発し、QMdieSubWindows を追加するために必要な Mdiarea を追加しました。

Qt Creator のようにロギング エリアを作成する方法を知りたいです。

私のログテキストは基本的に何が起こっているかです。として

オプティマイザを開始しました ... ファイルが保存されました ... ファイルがロードされていません ... など

QPlainTextEditaまたは aを追加することを考え、QTextEditそれらにテキストを追加するだけです。

私は QMainWindow.cpp にこれを書きました:

しかし、これは QMainWindow のメニューにプレーンテキストを表示しています。

StatusBar の上、一番下に配置したいと思います。

私は今尋ねたい:

  1. QPlainTextEditまたはQTextEdit:どちらが私の仕事に適していますか?テキストを追加するだけで、テキストを強調表示して色を付けることができます。

  2. Q(Plain)TextEditたとえば、下部の QtCreator で固定位置と固定幅で asを取得するにはどうすればよいですか?

MdiSubWindow を作成し、それにプレーンテキスト ウィジェットを追加して表示しようとしました。思い通りに機能し、テキストを追加できます。しかし、私はまだ下に固定することはできません。何か案は?

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

qt - QMdiArea: 最初のタブは正常に動作しますが、2 番目のタブのコンテンツが小さすぎます

状況:アプリケーションの中心的なウィジェットとして、タブモードのQMdiAreaがあります( QMdiAreaから継承したカスタムクラスにラップされています)。QMdiSubWindowを介して最初の QMdiSubWindow を追加してaddSubWindow()も問題ありません。つまり、ウィンドウとその内容が最大化されて、QMdiAreaのすべてのスペースが占有されます。ただし、2 番目のサブ ウィンドウを追加するとすぐに、次の問題が発生します。

問題: 2 番目のウィンドウのコンテンツが表示されず、最初のウィンドウのコンテンツが表示され続けますが (2 番目のタブに視覚的にフォーカスがあるにもかかわらず)、サイズが縮小されます。数ピクセルしか占有しません。しかし、最初のサブウィンドウ/タブに戻って (サイズが縮小されたウィジェットをクリックして自動的に最大サイズに戻るか、最初のタブヘッダーを選択して) 2 番目をもう一度選択すると、すべて問題ありません = 2 番目のタブのウィジェット/エディターが表示され、最大化されます。

ただし、2 番目のタブを閉じるまでは、最初のタブのコンテンツが (予想どおり) 表示されますが、小さいサイズでしか表示されません!

スクリーンショット: 問題の概要を示すスクリーンショット

別の関連するテスト ケース: 最初のタブが作成され、期待どおりにフル サイズで表示されます。QMainWindow全体のサイズを単純に変更すると、タブのウィジェットの周りに突然かすかな境界線が表示されます。そのため、境界のある最大化モードと通常モードが混在した状態にあるように見えます。それは新しいリードを生み出しますか?

スクリーンショット:

関連する問題の概要を示すスクリーンショット

私はこれまで明示的に定義されたレイアウトを使用していませんが、最初のタブが正常に機能し、手動で前後に切り替えた後に他のすべてのタブも同様に機能することを考えると、それがなくても機能するはずです.

明示的なレイアウト オブジェクトを設定する必要がありますか? 最初のタブでは機能するのに、2 番目のタブでは機能しないのはなぜですか?

ベースとしてのコード: これは、新しい子の追加を処理するカスタムQMdiAreaクラスで実行されるロジックです。

更新: N1ghtLight によって提案されたハックを追加しました。コーディングでそのようにマークされています。

更新 2:問題の説明を編集/修正 + スクリーンショット付きの新しいテスト ケース。

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

qt - QMDI サブウィンドウの切り替え

クラスが次のようなMDIアプリケーションがあります

GraphicsView への新しいポインターを作成するたびnewfile()に、新しい mdiSubWindow を作成しています。MainWindow

のコンストラクターはGraphicsView、新しい Scene を作成します。

複数のサブウィンドウが作成されると、以前のサブウィンドウで作業できなくなります。最新のサブウィンドウのみが期待どおりに機能します。たとえば。QGraphicsItems以前のサブ ウィンドウではなく、最新のサブ ウィンドウでのみ描画できます。

使用する必要があると思いますactiveSubWindow()が、すべてのサブウィンドウをタブの変更に応答させる方法がわかりませんでした。これをどのように実装すればよいですか?

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

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 つのエラー メッセージのいずれかが表示されます。

(これは実際には単なる警告です):

また

これらの問題を発生させずにサブウィンドウを削除するにはどうすればよいか、私は途方に暮れています。

ありがとう

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

python-2.7 - QMdiSubWindow を QMdiArea QMainWindow に配置するにはどうすればよいですか?

私はpyqtが初めてです。メニューバーとメニュー項目を備えた Qmainwindow でアプリケーションを実行したいと考えています。メニュー項目をクリックすると、QMdiSubWindow が qmdiarea に表示されます。これは私のqmainwindowコードです:

これは私の QMdiSubWindow コードです:

前もって感謝します

更新: actionFriends_click 関数を次のように変更しました。

更新 2: 忘れていました。Ui_mainForm に参照を追加する必要があります

この場合、QMdiSubWindows Ui_friendForm クラスは VIEW パッケージにあります。

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

qt - QMdiSubWindow を最大化した後、次に選択する QMdiSubWindow も最大化されます。どうすればこれを止めることができますか?

編集:

これはバグだと思いました。実際には、Qt のドキュメントで説明されているように (完全に埋め込まれているように) デフォルトの動作です...


質問:

に複数QMdiSubWindowの がありQMdiArea、一部が「最前面に表示」にフラグ付けされている場合、それらは「最大化」ウィンドウと奇妙に相互作用します。つまり、ウィンドウが最大化され、その上にレンダリングされた他のサブウィンドウがまだある場合、奇妙な動作が発生します。

「Stay on Top」ウィンドウのいずれかをクリックまたは操作すると、ウィンドウが最大化され、最大化されたウィンドウが復元されます。

これまでのところ、あるウィンドウの状態を別のウィンドウで追跡する方法を理解できないようです。ソース コードはごちゃごちゃで、使用しているプラ​​イベート クラス モデルは非常に混乱しており、実装とのやり取りは基本的に不可能です。うまく。また、動作を説明するドキュメントには何も見つかりませんでした。

この動作を示す最小限のプロジェクトは次のとおりです。

main.cpp

メインウィンドウ.h

メインウィンドウ.cpp

メインウィンドウ.ui

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

c++ - QMdiSubWindow を現在の QStackedLayout に追加

だから私はこのコードを持っています:

何らかの理由で動作しません。私がやりたいのは、レイアウトに表示されているウィジェットを取得することです-QMdiAreaとして、それにサブウィンドウを追加します。

PS これは完全なアプリの簡略化されたバージョンです。サブウィンドウを mdi1 に直接追加しても機能しますが、探しているものではありません (QStackedLayout には多くの QMdiArea があるため)。