1

QLabel をサブクラス化し、QLabel を QDialog に直接追加すると、問題なく動作します。このラベルを ScrollArea 内に追加すると、ダイアログ自体のサイズを変更しない限り、描画しているものは表示されません。はい、奇妙です。

問題が何であるかを示すコンパイル可能なサンプルコードをセットアップしました。私がやろうとしているのは、対応する領域に長方形を描いて、マウスで画像の領域を選択することです。私のプログラムが動作するように設計された画像は非常に大きくなる可能性があるため、ダイアログが論理的な次元にとどまり、画面全体を埋めないようにスクロール領域が必要です (複数のワークスペースでさえ、複数のデスクトップを持つ Linux マシンについて話している)。

ダイアログのサイズを手動で変更しない限り、描画(選択長方形)が表示されないことを除いて、すべて正常に機能します。描画中に何かを更新する必要があると思いますが、何がわかりません。さて、ここにサンプルコードがあります:http://paste.ubuntu.com/1151553/

私が解決する方法がわからない(そしてそこにあなたの提案が欲しい)別の問題は、(1)ユーザーが領域を選択しているとき、ユーザーが実際に領域を押して領域を選択したときに自動的にスクロールするように設定する方法です。スクロール領域の壁 (ここで理解できると思います)。(2)ユーザーが長方形を選択し、[Shift]ボタンを押したまま位置を左クリックすると、前の選択の右下端が実際にクリックしたポイントを通過する方法はありますかで?

ドキュメントには、何らかの方法でレイアウトを設定する必要があることが示されていますが、これを行う方法がわかりません。

助けてくれてありがとう。

4

1 に答える 1

0

問題(1)について:

イベントを使用するだけです。マウスのEnter EventまたはLeave Eventがそれには適していると思います。

そのためには、画面全体を埋める非表示の長方形を使用できると思います。その長方形のマウスを残すイベントを上書きし、その関数でページをスクロールするように伝えます。

于 2013-01-03T21:32:14.597 に答える