問題タブ [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.
linux - デスクトップへのコンパイルと組み込み Linux 環境へのコンパイルに違いがある QScrollBar
最近、この質問で SO に来て、QComboBox の QScrollBar の厚さを変更するためにどのように手に入れることができるかを尋ねました。返信を読んだ後、Qt Embedded アプリケーションで Marco A. ソリューションを試しましたが、うまくいきませんでした。次に、テストのために、コンパイル環境をデスクトップに変更したところ、修正が機能しました。
基本的に私の問題は、Qt for Embedded Linux (ARM) で QComboBox の QScrollBar 幅を変更しようとすると何も起こらないが、Qt for Desktop 用にまったく同じコードをコンパイルすると動作することです。以下は、テストに使用しているコードです。
同じことを行う別のコードがありますが、同じ問題を示しています。
comboBox
Qt Designer (Qt Creator 内) の ui フォームで宣言されています。
Qt のバージョンは、Desktop と Qt for Embedded Linux (4.8.5) で同じです。私が奇妙だと思ったもう 1 つのこと (しかし、それとは何の関係もないはずです) は、デスクトップ用に同じコードを再度コンパイルすると、Windows XP スタイルの QComboBox が表示されますが、埋め込み用には Plastique スタイルが使用されていることがわかります (Plastique のおかげで非常に明確にわかります)。スクロール バーをスクロールするための 2 つではなく 3 つのボタンを表示します)。
では、何が起こっているのでしょうか?どうすればこの問題を解決できますか?
c++ - QScrollArea を動的にその親に合わせますが、その子には展開しません
から必要な動作を取得する際に問題が発生しているようですQScrollArea
。現状では、スクロール領域のターゲットとして設定されたウィジェットのレイアウトに何かを追加するたびに、スクロールに合わせるのではなく、ウィンドウ全体を拡大することを選択します。
これが私の現在の設定です:
これにより、スクロール領域が拡大するだけで、スクロール バーが表示されないようになります。
次の行を挿入すると:
子のサイズを無視するように領域を取得できますが、必要なスペースも占有せず、スクロール バーも表示しません。内部のウィジェットをクランチするだけです。
私は Qt を使用することに少し慣れていますが、必要な動作をどのように達成するのか疑問に思っていました。追加時に垂直方向にレイアウトが含まれますが、代わりに実際にはスクロール バーが表示されます。私は多くのサイズ変更を許可することを計画しているので、固定サイズではなく、実際に親に合わせてスケーリングする必要があります。GUI のこの側面を解決するためにどのように進めればよいか途方に暮れています。お時間をいただきありがとうございます。
この問題を視覚的に解決したい場合は、次のハーネスを使用できます。大変お世話になりました。
qt - qscrollareaを水平に制御するにはどうすればよいですか
私はスクロール機能を持っており、QScrollArea
横方向にのみスクロール機能を使用したいと考えています。スクロールバーを非表示にしたいので、スクロールバーポリシーは「AlwaysOff」です。
私は助けを得たいと思っています。
c++ - QWidget の実際の可視性ステータスの変化をキャッチ
C++ Qt 5.2.1 ベースのプロジェクトがあり、グラフィック コンポーネントの 1 つが次のようになります。
したがって、ParentWidget は QScrollArea であり、その他は QWidget です。ParentWidget にはいくつかの MiddleWidget が含まれ、MiddleWidget にはいくつかの ChildWidget が含まれます。MiddleWidget は、展開または折りたたむこともできます。折りたたむと、ChildWidget は「表示」されません (isVisible() == false)。
ユーザーが ParentWidget を上下にスクロールすると、「可視」(isVisible() == true) の ChildWidget が実際には画面に表示されない場合があります。ChildWidgets には画像が含まれており、すべての画像をメモリに格納するのは非効率的です。だから私は ChildWidget が実際に画面に表示され、ユーザーがそれを見たときに画像をロードしたい。ChildWidget が消えたら、画像をファイルに保存し、メモリから消去する必要があります。
現在、ParentWidget を介して、このような実際の可視性の変化を確認できます。
しかし、この方法には明らかに欠点があります。
- ChildWidgets は実際の可視性の変更を認識せず、ParentWidget に依存します
- ParentWidget のペイント イベントが発生すると、すべての ChildWidgets をチェックする必要があります
だから私の質問は: QWidget は実際の可視性状態自体の変更をキャッチできますか? いいえの場合、そのような動作を実装するためのより効果的な方法があるでしょうか?
qt - Qt: QScrollArea のウィジェットで setGeometry を呼び出すときの奇妙な動作
私の環境は以下です。
- Qt 5.4、ソースからビルド
-platform win32-msvc2013 -opengl desktop -no-icu -skip webkit
- ビジュアル スタジオ 2013
- ウィンドウズ 7 x64
次のセットアップを検討してください (固定サイズの中央に配置されたウィジェットを含む QScrollArea):
ここで、次のようにプログラム内でそのウィジェットのサイズを変更したいと思います。
ここで奇妙な動作が発生します。とが現在の幅と高さと等しい (つまり、何も変わらない)
場合、ウィジェットは左上隅にジャンプします。とが現在の幅と高さと異なる
場合、ウィジェットは中央の位置にとどまり、サイズが正しく変更されます。w
h
w
h
この問題を示す小さなデモ アプリケーションを作成しました。ボタンをクリックするpushButton_Stay
と、ウィジェットが左上隅にジャンプします。
ボタンをクリックするpushButton_Up
:
ボタンをクリックするpushButton_Stay
:
質問:
ここで何がうまくいかないのですか?
バグですか?もしそうなら、誰でもそれを確認できますか?
バグでない場合、ウィジェットが常に中央に表示されるようにするにはどうすればよいですか?
c++ - qscrollbar の横にウィジェットを追加
ここに見られるように QScrollbar の隣にウィジェットを配置するにはどうすればよいですか:
QScrollArea を使用し、Horizontal-QScrollBar を上書きします。まず、paintEvent を使用して、バーの横に「100 %」のようなテキストを描画できると考えました。ただし、既存の絵を上書きすることしかできません。
今、唯一の機会は、ソースコードからホール QScorllBarPrivate を実装することだと思います...誰かアイデアはありますか?
c++ - QScrollAreaのQVBoxLayoutでQTableViewをスクロールする
QTableView ウィジェットに問題がありました。ヘッダーを含むウィジェット全体を水平スクロールする必要がありますが、標準スクロールではコンテンツのみをスクロールし、ヘッダーはスクロールしません。
次に、次のように QScrollArea を追加しようとしました (これはすべて QDockWidget にあります):
コンストラクターで:
スクロールバーが表示されません。
(ルールを破っていたらすみません。ここでの最初の質問です。下手な英語で申し訳ありません)
c++ - Qt: QScrollArea でウィジェットが表示されているかどうかを判断する方法は?
ハンドラーを再実装し、QWheelEvent
各子ウィジェットvisibleRegion
が 0 かどうかを確認することを誰かが提案しました。
より良い提案はありますか?
qt - QLayoutItemがQScrollAreaのスクロールによって隠されているかどうかを知る方法は?
QListWidgetItem がスクロールによって隠されているかどうかを知る方法で尋ねられたのと同様の質問がありますか? その質問への答えは私の問題を解決しませんでした。
基本的に、QGridLayoutを持つQScrollAreaがあります。このレイアウトには多くの QToolButtons があります。いくつかの条件に基づいて、これらすべての QToolButtons を更新する必要があります。それらすべてを常に更新するのはあまり効率的ではないため、現在アクティブなウィンドウに表示されているボタンのみを更新したいと考えています。どうすればこれを達成できますか?isVisible() はここでは役に立ちません。
前もって感謝します!