問題タブ [qscrollarea]

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 に答える
1367 参照

pyqt - サイズ変更後の GridLayout+ScrollArea ウィジェットの位置

内部に gridlayout を持つ scrollArea があり、それに QLabels を画像とともに追加します。アプリケーションが起動すると、正常に動作し、ラベルが正しく表示されます。

起動時 注: 現在のレイアウト スペースに収まるラベルの数を計算します。

私が最大化すると、それもうまくいきます: 私が最大化するとき

しかし、復元を押すと、奇妙なことが起こります: 復元後

6 つのラベルのみが追加されていることがわかります (最初のスクリーン ショットと同じ) が、ここではそれらがすべて互いに重なり合って配置されています。

これは、ScrollArea と Layout の初期化コードです。

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

qt - QScrollArea 画像として保存 (jpg,tiff,png)

私はいくつかの「曲線」(このようなもの)を持っています。これらの曲線は QVBoxLayout に含まれており、これは QScrollArea に含まれています。

私の質問は、これらの「曲線」を画像ファイルとして保持する方法はありますか? つまり、jpg、png、tiff など。

ありがとう

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

image - QScrollArea 内にある画像を描画しますか?

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

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

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

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

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

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

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

python - PyQt と matplotlib を使用してスクロール可能なウィジェットに複数のプロットを表示する

この質問に対する答えが得られなかったので、PyQt で解決しようとしました。どうやら、QScrollArea が関係している場合、それほど簡単ではありません...

基本的に探していることを実行する小さなテストを作成しましたが、期待どおりにスクロール領域とその中のプロットが表示されません:

機能しない理由を説明できる人はいますか?

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

c++ - QScrollAreaのコンテンツにQScrollBarを配置するにはどうすればよいですか?

使い方に応じてフェードイン/フェードアウトするスクロールバーを作りたいです。QScrollBarをサブクラス化して、希望の外観にしました。問題は、スクロールバーがコンテンツの横に配置されていることです。代わりに、コンテンツの上に配置するにはどうすればよいですか?

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

c++ - Qtにアイテムを追加するときに同じスクロール位置に留まるにはどうすればよいですか?

QVBoxLayoutを持つQWidgetを含むQScrollAreaがあります。無限スクロールを実装して、スクロールの下部に 80% 到達すると、より多くのアイテムをロードして、さらにスクロールできるようにしたいと考えています。

問題は、80% に達して QVBoxLayout にさらに項目を追加しようとすると、すべての項目が上に移動して、すべての新しい項目が表示されることです。新しいアイテムが追加されている間、QScrollArea を同じ相対的な場所にとどめるにはどうすればよいですか?

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

c++ - アイテムをクリックするときに自動スクロールを無効にする

カスタムアイテムデリゲートを備えたQTreeViewがあります。デリゲートは、非常に幅の広い(たとえば、幅2000px)エディターを作成するため、ユーザーは水平方向にスクロールしてデータを編集します。

ステップ1

画像1:フレーム#300までスクロールしました。スクロールバーがすでにオフセットされていることに注意してください。

ステップ2http://imageshack.us/a/img801/9887/image2zb.png

画像2:エディターの一部をクリックします。次に、スクロールバーが自動的に開始位置に移動します。これは、現在選択されている行が変更されたために発生します。自動スクロールを無効にする方法はありますか?

ありがとう!

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

qt - QScrollArea の不要なスクロールバーを取り除く

私は構成QDialogに取り組んでいます。ユーザーがクリックすると読み込まれるいくつかのカテゴリ (一般、外観など) があります。各カテゴリには独自のページがあります。これらのページは、それ自体が別個のクラスです (それぞれに独自の ui、cpp、および h があります)。[設定] ウィンドウが読み込まれると、ページがインスタンス化され、QStackedWidget に読み込まれます。Stackedwidget は QScrollArea に配置され、必要に応じてスクロールできるようになります。

ただし、問題があります。QStackedWidget を追加して以来、現在のページが必要ないほど短い場合でも、QScrollArea には常に垂直スクロールバーがあります: (図は最も短いページを示しています)

構成スクロールバーの問題

ScrollArea 垂直スクロール ポリシーは Qt::ScrollBarAsNeeded に設定されているため、論理的には、ページが表示可能領域よりも大きい場合にのみバーを表示する必要があります。

これは私がすでにこれを修正しようとしたものです:

  1. スクロール ポリシーを Qt::ScrollBarAlwaysOff に設定します。これによりスクロールバーが取り除かれますが、長いページをスクロールする必要があることをユーザーに知らせないため、受け入れられません。

  2. QStackedwidget の最小/最大の高さを設定します。これにより、十分に低い値に設定するとスクロールバーが消えますが、ウィジェットの一部が押しつぶされた外観になるため、受け入れられません。

問題が QStackedWidget に関係していることはわかっていますが、QStackedWidget を使用するのはこれが初めてなので、それが何であるかはわかりません。また、スクロールが常に同じ量であることにも気付きました。つまり、スクロール可能な領域は、ページ ウィジェットのサイズに関係なく、常に同じサイズです。なんらかの理由で、最も長いページよりもわずかに大きくなっています。最初は、レイアウトを引き締めるために各ページの下部に配置した垂直スペーサーがこれを引き起こしていると思いましたが、それらを取り除いても修正されませんでした.

更新: Stackedwidget を制御するコードは次のとおりです。

0 投票する
4 に答える
30466 参照

qt - QScrollArea のコンテンツのサイズを変更して、内部にウィジェットを配置する方法を教えてください

空で始まるQScrollAreaウィジェットがあります。

空の QScrollArea

QGridLayout を使用した垂直レイアウトと、上部に保持するための垂直スペーサーがあり、スクロール領域全体に広がるのを防ぎます。

Qt Designer の QScrollArea

プログラムの他の場所には QTextEdit があり、変更されると、内容が「種」要素をスキャンされ、QGridLayout に追加されます。削除された種要素もすべて削除されます。このビットは機能します。

QScrollArea の奇妙なスクロール バー

垂直スクロールバーを常にオンにして、表示されたときに他のものの上に置かないようにしています。スクロール バーはスクロール ボックスよりも大きいことに注意してください。

これが問題です。スクロール領域はプリセットされているようで、変更できません。QGridLayout にさらに行を追加しても、スクロール領域のサイズは大きくなりません。

代わりに、同じサイズを維持し、QGridLayout を圧迫して (最初は) 見苦しくします。

押しつぶされた QGridLayout

さらに追加すると、使用できなくなります。

使用できない行編集

繰り返しますが、スクロール バーは前の画像と同じサイズのままです。最初の 2 つの画像は Qt Designer のもので、次の 3 つは実行中のプログラムのものです。

QScrollArea が大きくなるようにウィンドウのサイズを変更すると、次のように表示されます。

小さすぎるレイアウト

スクロール領域内に適切にサイズ変更されていないレイアウトがあることを示しています。

私の質問は; QGridLayout に追加および削除するときに、ウィジェットのスクロール可能な領域を動的にサイズ変更するにはどうすればよいですか?

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

python - 動的 QGridLayout の更新 - Python PyQt

最近Pythonの勉強を始めて、今はPyQt Librariesを使ってGUI付きのソフトウェアを作っています。

これが私の問題です:私はスクロールエリアを作成し、このスクロールエリアにQGridLayoutを含むウィジェットを配置しました。

次に、10 個の QLabel を追加します (これはもちろん単なる例です。この例では、垂直レイアウトと同様に QGridLayout を使用しています):

次に、関数「function_name」を呼び出すボタンを作成します。この関数が行を削除するようにしたいと思います。これまでのところ、これは私が書いたものです。

最初の行を削除し、グリッドレイアウトの x 行ごとに行 x-1 になりますが、「行 1」というテキストは削除されないため、同じ行に「行 0」と「行 1」が表示されます。

誰でも私を助けることができますか?

事前にどうもありがとう、ダビデ