問題タブ [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.
c++ - Qt 4.4 で QMDIArea を使用します。
QMdiArea
Qt 4.4で使用しています。
新しいプロジェクトが作成された場合は、いくつかのサブ ウィンドウを に追加しQMdiArea
ます。実行時にユーザーがサブ ウィンドウを閉じることを禁止したいと思います。サブウィンドウは、アプリケーション全体を閉じるか、新しいプロジェクトを作成する場合にのみ閉じてください。
これどうやってするの?
c++ - Qt - ショートカットの削除 -- あいまいなショートカットのオーバーロード
外部情報: Qt を使用してアプリケーションを構築しようとしています。このアプリケーションは、QMdiArea と子ウィンドウを備えています。私の子ウィンドウには、QMdiArea に統合するか、分離して子自体に添付できるメニューがあります。ただし、これは必要以上に詳細です...
問題: 子ウィジェットに「CTRL+W」ショートカットのメニューを持たせたいです。しかし、私は QMdiArea を使用しているため、ショートカットは既に使用されており、次の原因となっています。
QAction::eventFilter:あいまいなショートカットのオーバーロード: Ctrl+W
このショートカットを削除して、代わりに子ウィジェット内で要求するにはどうすればよいですか?
更新: これは私が運が悪いことを試したものです:
キーコンボが受信され、イベントがスローされるように変更Qt::Key_W
する だけの簡単なことをすると、これは機能します。Qt::Key_L.
Wでは、それは決して起こりません。event
また、サブウィンドウのQMainWindowとeventFilterをQMdiAreaに移動しようとしました。QMdiArea 内からデフォルトのキーハンドラーを削除するのと同じくらい単純なことを行うのは、少し複雑すぎるようです。
c++ - QMdiArea サブウィンドウ ウィジェットのサイズを変更できないようにするには?
QMdiArea
だから私のコードの非バージョン、
うまく機能し、ユーザーがサイズを変更できないウィジェットを生成します。しかし、MainWindow
コードを次のように置き換えると
内にあるウィンドウQMdiArea
はサイズ変更可能です。Qt::WindowFlags の問題ではないようです。サイズ変更ポリシーを処理しません。確かにこれを行う方法はありますか?NBsetFixedSize(ht, wd)
ウィジェットのサイズはプログラムで変更できるため、次のようなものは使用できません(サブウィジェットが追加および削除されます)。ただし、ユーザーはサイズを変更できないはずです。
qt - QMdiArea で複数のドキュメントを処理するためのベスト プラクティスは?
グラフィック要素などを含むカスタマイズされたファイルを編集できる、一種のグラフィック ソフトウェアを設計および開発する必要があります。
QMdiArea
の中に実際に私の中心的なウィジェットであるのおかげで、ソフトウェアには多くのドキュメントが含まれていると思いQMainWindow
ます。
ドキュメントごとに、aQGraphicsView
と a の両方が必要になりQGraphicsScene
ます。これらは一緒に機能するからです。
ここで、私の質問は、QGraphicsView
保護された/プライベート メンバーを独自のに継承する必要があるか、または/のインスタンスQGraphicsScene
を継承して処理するクラスを作成する必要があるかということです。QWidget
QGraphicsView
QGraphicsScene
それとも、私が考えていなかった解決策が残っていますか?
qt - QMdiArea でのサブウィンドウの変更の拒否
複数の QMdiSubWindows を持つ QMdiArea があります。構築中、QMdiArea は TabbedView および DocumentMode として初期化されるため、デフォルトでは QTabWidget のように見えます。
ユーザーがサブウィンドウを切り替えるためにタブをクリックしたときに、確認を追加したいのですが、ユーザーがキャンセルを選択した場合、アクティブなタブは変更されません。
私の解決策は、シグナル「subWindowActivated」を処理し、確認が失敗した場合に「setActiveSubWindow」を元のサブウィンドウに呼び出すことです。
問題は、setActiveSubWindow 呼び出しが期待どおりに機能しなかったことです。アクティブなウィンドウは元のウィンドウに戻りますが、サブ ウィンドウは最大化されず、重なっています。元のサブウィンドウは、ユーザーがクリックしたものの後ろに表示されます。setWindowState を呼び出してサブ ウィンドウを最大化し、それにフォーカスを設定することはできますが、サブ ウィンドウはユーザーがクリックしたウィンドウの背後にあります。
ユーザーが新しいサブ ウィンドウをクリックした後、元のサブ ウィンドウに戻る適切な方法があるかどうかを知りたいです。
以下はいくつかのコードです
qt - 現在アクティブなタブからフォーカスを移さずに QMdiArea (TAB モードに設定) に SubWindow を追加する方法は?
バックグラウンドで実行され、 にタブを追加する機能がありますQMdiArea
。ただし、新しいタブが追加されると、現在アクティブなタブからフォーカスが奪われます。新しい非アクティブなタブ (サブ ウィンドウ) を追加して、現在使用されているタブにフォーカスを維持する方法はありますか?
Web を検索しましたが、この問題に関連するものは見つかりませんでした。
私は次のことを試しました:
しかし、それは望ましい効果をもたらしません。
qt - QMdiAreaの子ウィンドウのサイズと位置
設定していないオブジェクトQMdiArea
がありますが、以下のとおりです。QMainWindow
setCentralWidget()
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
(私はしません)。そのため、子ウィンドウの位置が変更されたときに、その位置を保存する必要があります。どうすればいいですか?
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 領域のクラス メンバーとして持つことができます。
この投稿が役に立ったと思ったら、投票してください。ありがとう。
たとえば、いくつかのコード。
/li>QTabBar
コンストラクターでカスタム mdi 領域内の標準を探します。再親化:
/li>隠蔽:
/li>使用される信号とスロット:
QMdiArea::subWindowActivated(QMdiSubWindow*)
、QTabBar::currentChanged(int)
qt - mdiarea サブウィンドウを反復処理する
私はmdiAreaを持っています。画像を開くたびに、この mdiArea にサブウィンドウを追加します。各サブウィンドウに設定したウィジェットは、QDialog から継承した imageFileDialog です。このダイアログ内にスピンボックスがあります。作成後に mdiArea にあるすべてのダイアログに対して、このスピンボックスの値を設定できるようにしたいと考えています。ダイアログを反復する方法がわかりません。これを行う方法を考えてみました。
しかし、QDialog から継承する imageFileDialog クラスとしてウィジェットをキャストできないため、エラーが発生します。
imageFileDialogの作成時に接続を設定できるかもしれませんが:
しかし、これは私が以前に試みた接続とは異なります。すべて正常にコンパイルされますが、送信された信号がスロットに到達しません。誰かがこれを以前に試して、いくつかの提案をしてくれることを願っています! 前もって感謝します。
qt - QWidget ベースのクラスのサイズ変更が mdi モードで機能しない
mdiform のサブウィンドウを作成しようとしています。以下のコードを使用します。
ここで、pygApp は QWidget ベースのクラスです。
しかし、結果は次のとおりです。
ご覧のとおり、サブウィンドウは理由もなく最小化されています。setGeometry も使用しましたが、何も変わりませんでした。私は何をすべきか?