問題タブ [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 投票する
2 に答える
2369 参照

c++ - Qt 4.4 で QMDIArea を使用します。

QMdiAreaQt 4.4で使用しています。

新しいプロジェクトが作成された場合は、いくつかのサブ ウィンドウを に追加しQMdiAreaます。実行時にユーザーがサブ ウィンドウを閉じることを禁止したいと思います。サブウィンドウは、アプリケーション全体を閉じるか、新しいプロジェクトを作成する場合にのみ閉じてください。

これどうやってするの?

0 投票する
5 に答える
5362 参照

c++ - Qt - ショートカットの削除 -- あいまいなショートカットのオーバーロード

外部情報: Qt を使用してアプリケーションを構築しようとしています。このアプリケーションは、QMdiArea と子ウィンドウを備えています。私の子ウィンドウには、QMdiArea に統合するか、分離して子自体に添付できるメニューがあります。ただし、これは必要以上に詳細です...

問題: 子ウィジェットに「CTRL+W」ショートカットのメニューを持たせたいです。しかし、私は QMdiArea を使用しているため、ショートカットは既に使用されており、次の原因となっています。

QAction::eventFilter:あいまいなショートカットのオーバーロード: Ctrl+W

このショートカットを削除して、代わりに子ウィジェット内で要求するにはどうすればよいですか?

更新: これは私が運が悪いことを試したものです:

キーコンボが受信され、イベントがスローされるように変更Qt::Key_Wする だけの簡単なことをすると、これは機能します。Qt::Key_L.Wでは、それは決して起こりません。eventまた、サブウィンドウのQMainWindowとeventFilterをQMdiAreaに移動しようとしました。QMdiArea 内からデフォルトのキーハンドラーを削除するのと同じくらい単純なことを行うのは、少し複雑すぎるようです。

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

c++ - QMdiArea サブウィンドウ ウィジェットのサイズを変更できないようにするには?

QMdiAreaだから私のコードの非バージョン、

うまく機能し、ユーザーがサイズを変更できないウィジェットを生成します。しかし、MainWindowコードを次のように置き換えると

内にあるウィンドウQMdiAreaはサイズ変更可能です。Qt::WindowFlags の問題ではないようです。サイズ変更ポリシーを処理しません。確かにこれを行う方法はありますか?NBsetFixedSize(ht, wd)ウィジェットのサイズはプログラムで変更できるため、次のようなものは使用できません(サブウィジェットが追加および削除されます)。ただし、ユーザーはサイズを変更できないはずです。

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

qt - QMdiArea で複数のドキュメントを処理するためのベスト プラクティスは?

グラフィック要素などを含むカスタマイズされたファイルを編集できる、一種のグラフィック ソフトウェアを設計および開発する必要があります。

QMdiAreaの中に実際に私の中心的なウィジェットであるのおかげで、ソフトウェアには多くのドキュメントが含まれていると思いQMainWindowます。

ドキュメントごとに、aQGraphicsViewと a の両方が必要になりQGraphicsSceneます。これらは一緒に機能するからです。

ここで、私の質問は、QGraphicsView保護された/プライベート メンバーを独自のに継承する必要があるか、または/のインスタンスQGraphicsSceneを継承して処理するクラスを作成する必要があるかということです。QWidgetQGraphicsViewQGraphicsScene

それとも、私が考えていなかった解決策が残っていますか?

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

qt - QMdiArea でのサブウィンドウの変更の拒否

複数の QMdiSubWindows を持つ QMdiArea があります。構築中、QMdiArea は TabbedView および DocumentMode として初期化されるため、デフォルトでは QTabWidget のように見えます。

ユーザーがサブウィンドウを切り替えるためにタブをクリックしたときに、確認を追加したいのですが、ユーザーがキャンセルを選択した場合、アクティブなタブは変更されません。

私の解決策は、シグナル「subWindowActivated」を処理し、確認が失敗した場合に「setActiveSubWindow」を元のサブウィンドウに呼び出すことです。

問題は、setActiveSubWindow 呼び出しが期待どおりに機能しなかったことです。アクティブなウィンドウは元のウィンドウに戻りますが、サブ ウィンドウは最大化されず、重なっています。元のサブウィンドウは、ユーザーがクリックしたものの後ろに表示されます。setWindowState を呼び出してサブ ウィンドウを最大化し、それにフォーカスを設定することはできますが、サブ ウィンドウはユーザーがクリックしたウィンドウの背後にあります。

ユーザーが新しいサブ ウィンドウをクリックした後、元のサブ ウィンドウに戻る適切な方法があるかどうかを知りたいです。

以下はいくつかのコードです

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

qt - 現在アクティブなタブからフォーカスを移さずに QMdiArea (TAB モードに設定) に SubWindow を追加する方法は?

バックグラウンドで実行され、 にタブを追加する機能がありますQMdiArea。ただし、新しいタブが追加されると、現在アクティブなタブからフォーカスが奪われます。新しい非アクティブなタブ (サブ ウィンドウ) を追加して、現在使用されているタブにフォーカスを維持する方法はありますか?

Web を検索しましたが、この問題に関連するものは見つかりませんでした。

私は次のことを試しました:

しかし、それは望ましい効果をもたらしません。

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

qt - QMdiAreaの子ウィンドウのサイズと位置

設定していないオブジェクトQMdiAreaがありますが、以下のとおりです。QMainWindowsetCentralWidget()

QMdiAreaこれを中央のウィジェットに設定したくありません。今、私はこの中にいくつかの子ウィンドウを作成してQMdiAreaいます、次のように

ここまでは順調ですね。しかし、問題は子ウィンドウのサイズ変更/閉じるイベントにあります。サイズを保存する必要があり、サイズ変更/閉じるイベントで子ウィンドウHelpWindowのサイズを保存するために次のことを行っています。

Ok。ここに問題があります。子ウィンドウ内の関数から取得したサイズは、size()関数で使用したサイズとは異なりますsetGeometry()。サイズ変更イベント(つまり、Closeイベント)以外の方法で表示された場合でも同様です。

したがって、子ウィンドウが(setGeometryを使用して)400、200のサイズで初めて作成されたときに、このウィンドウを閉じるときに、取得するサイズがどちらを保存するHelpWindow::size()(385, 190)を示し、次回setGeometry()はこのサイズを取得するとします。設定、そしてこの時点でクローズイベントで私はより小さなサイズになり、最終的に私の子ウィンドウのサイズはになります(0, 0)

1:これらの両方のサイズを同期する方法についての考え(つまり、子ウィジェットがsetGeometry()関数によって設定されている場合のサイズと、ウィジェットの関数から取得しているウィジェットのサイズsize()

2:別の質問です。子ウィジェット()クラスでresizeEvent / closeEventイベントなどを受信して​​いHelpWindowますが、子ウィンドウを内部に移動してもmoveEventを取得していません。QMdiAreaこのイベントを受信するのは、内部の子ウィンドウを最大化したときだけです。QMdiArea(私はしません)。そのため、子ウィンドウの位置が変更されたときに、その位置を保存する必要があります。どうすればいいですか?

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

c++ - QMdiArea でカスタム タブ バーを使用する

QMdiAreaタブ表示モードがあることがわかりました。メイン ウィンドウを 2 つのウィジェットで分割し、QMdiAreaそれぞれの間でタブをドラッグ アンド ドロップできるようにしたいと考えています。QTabWidgetカスタムタブバーを設定できる簡単な場所で、すでにそれを行っています。同時に、QMdiArea表示モードを切り替えたいので、使用することQTabWidgetはできません。しかし、 内にカスタム タブ バーを設定する方法が見当たりませんQMdiArea。それができるという希望はまだあります。誰でも何か提案できますか?

Qt 4.8 のテスト済みソリューション (編集)

しばらく調査した後、次の解決策を提案できます。を継承する新しいクラスを作成する必要がありますQMdiArea。ビュー モードをTabbedViewに設定して、標準QTabBarを 内で構築できるようにしますQMdiArea。次に、すべての子を取得し、 でQTabBarウィジェットを見つけますQString(QObject::metaObject()->className()) == "QTabBar"。隠します。モードのドキュメントの上に空白の領域が表示されTabbedViewます。カスタム タブ バーを構築し、それをカスタム mdi 領域に再親化します。サブウィンドウとタブがアクティブ化されたときに発生して使用されるシグナルとスロットを接続します。カスタム タブ バーをカスタム mdi 領域のクラス メンバーとして持つことができます。

この投稿が役に立ったと思ったら、投票してください。ありがとう。

たとえば、いくつかのコード。

  1. QTabBarコンストラクターでカスタム mdi 領域内の標準を探します。

    /li>
  2. 再親化:

    /li>
  3. 隠蔽:

    /li>
  4. 使用される信号とスロット: QMdiArea::subWindowActivated(QMdiSubWindow*)QTabBar::currentChanged(int)

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

qt - mdiarea サブウィンドウを反復処理する

私はmdiAreaを持っています。画像を開くたびに、この mdiArea にサブウィンドウを追加します。各サブウィンドウに設定したウィジェットは、QDialog から継承した imageFileDialog です。このダイアログ内にスピンボックスがあります。作成後に mdiArea にあるすべてのダイアログに対して、このスピンボックスの値を設定できるようにしたいと考えています。ダイアログを反復する方法がわかりません。これを行う方法を考えてみました。

しかし、QDialog から継承する imageFileDialog クラスとしてウィジェットをキャストできないため、エラーが発生します。

imageFileDialogの作成時に接続を設定できるかもしれませんが:

しかし、これは私が以前に試みた接続とは異なります。すべて正常にコンパイルされますが、送信された信号がスロットに到達しません。誰かがこれを以前に試して、いくつかの提案をしてくれることを願っています! 前もって感謝します。

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

qt - QWidget ベースのクラスのサイズ変更が mdi モードで機能しない

mdiform のサブウィンドウを作成しようとしています。以下のコードを使用します。

ここで、pygApp は QWidget ベースのクラスです。

しかし、結果は次のとおりです。 ここに画像の説明を入力

ご覧のとおり、サブウィンドウは理由もなく最小化されています。setGeometry も使用しましたが、何も変わりませんでした。私は何をすべきか?