問題タブ [qgridlayout]
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++ - QGridLayoutからのQWidgetsの削除
QGridLayout
カスタムを追加する場所がありますQWidgets
。
それらをすべて削除しようとすると、おそらくレイアウトから削除されますが(関数layout.count()
が0を返すため)、それらは引き続きインターフェイスに表示され、操作できます。
ここに、ウィジェットを追加する方法があります。
そして、ここで私がそれらを削除する方法:
QGridLayoutからアイテム/ウィジェットを正しく削除するためのヘルプやヒントはありますか?
PD:インターネットで、多くの人がレイアウトからウィジェットを削除した後、ウィジェットを直接削除する(delete _widget)ことを確認しました。私の場合、そのウィジェットをメモリに保持する必要があるため、それは不可能です。
qt - QGridLayoutのQtアライメントにより、要素のサイズ変更が不要になります
さて、基本的に、以下に示すように、QWidgetと2つのボタンを備えた単純なテーブルがあります。
これは基本的に私が欲しいもので、「リセット」と「完了」はボタンです。基本的に、これはQWidget、viewcontainerであり、ボタンの高さは同じままで、ユーザーがウィンドウサイズを変更するとサイズが変更されます。ただし、gridlayoutのデフォルトでは、コンテンツを左に揃えます。これを次のように変更した場合:
それは私が望むようなものですが、graphicssceneのサイズは変更されなくなりました(小さな一定のサイズのままです)。ウィジェットを中央に揃えるだけで、サイズ変更を維持したいと思います。ありがとう。
c++ - 中央セルを使用して 3x3 QGridLayout を設定する
私は C++ Qt 4.6.3 で小さなゲームを開発していますが、レイアウトの問題に遭遇しました。私が探しているレイアウトは、中央のセル (1,1) がメイン ウィジェット (ボード ゲーム) を保持する 3x3 QGridLayout です。(0,1)-セルは、誰の番かを表示する QLabel を保持する必要があります。(1,0) および (1,2) セルは、最大 3 つのスコアボードを保持するために QVBoxLayouts に分割され、(2,1) -cell は、ある種の QLabel も保持します。
これは私がこれまでに得たものです:
さて、MS Windows(私のGFのラップトップ)で、resizeEvent()
関数を再実装することでこれを解決しました:
これはうまくいきました!ただし、Unix では問題があるようです (または、バージョンの違いが原因でしょうか? 4.6 と 4.8)。メソッドを呼び出すとsetRowMininmumHeight()
、別のサイズ変更イベントが発行され、再帰呼び出しが発生したようです! アプリケーションを両方のプラットフォームで動作させたいので、明らかに別のソリューションを見つける必要がありました。setRowStretch()
私はandをいじりましsetColStretch()
たが、どちらも望ましい結果にはなりませんでした。あらゆる組み合わせを試しましたが、今はかなり行き詰まっています...
この一見簡単な問題を解決できる人はいますか?
qt - QGridLayout に配置するウィジェット
QGridLayout を使用し、レイアウトを ui ファイルとして定義します。
そのようなレイアウトを実装する必要があります:
|列 0 |列 1 |列 2 |列 3 |
|テキストに合わせて十分な幅|空白|幅 66-70 の行編集|テキストに合わせて十分な幅|
私の問題は列1と2です。
すべての空き領域を列 1 に割り当てるには、どのサイズ ポリシーを使用すればよいですか?
列 2 に最小幅 = 66 と最大幅 = 70 を設定しようとしています。そして、列 1 に「拡張」幅ポリシーを設定します。
しかし、何らかの理由で、この場合、列 1 は本来あるべきよりも拡張されており、列 2 は 66 未満です。
列 1 のサイズ ポリシーを「最大」に設定すると、すべてのスペースが列 2 に割り当てられます。また、その列の幅は行編集ウィジェットよりも大きいため、右揃えになりません。
c++ - QWidget を中央に配置し、縦横比を維持しながら、レイアウト内の QWidget のサイズを変更する方法
わかりましたので、ブラウザで画像のサイズを変更し、ウィンドウの中央に配置しながらアスペクト比を維持するqtで画像を表示したいと思います。アスペクト比を使用してサイズ変更を正しく機能させることができますが、Qt::AlignCenter に合わせると、qwidget のサイズが変更されなくなります (固定サイズのままです)。したがって、基本的に、どちらのオプションも機能させることができますが、一緒にすることはできません。
私がやろうとしていることの良い例は、matlab の imshow() 関数です。これにより、縦横比を維持しながら画像のサイズが変更され、画像がウィンドウの中央に配置されます。私が持っているコードは次のようなものです:
そしてコンストラクターで:
グーグルで検索しましたが、何も見つかりませんでした。また、少し前に同様の質問をしましたが、回答から、私は質問を十分に明確にしなかったようです。ありがとう。
qt - レイアウトサイズヒントqwidget
チェステーブルと、チェステーブルの下に2行で表示される6つのボタンを含むウィジェットを作成しています。ボタンの行はチェスのテーブルよりも幅が広いです。チェスのテーブルとボタンはQGridLayoutにあります。チェステーブルには、正方形のサイズから計算された独自のsizeHintがあります。
いくつかの操作の後、ボタンを削除し、すべてを含むウィジェットのサイズをsizeHint(resize(sizeHint())
)に変更します。ウィジェットは垂直方向に適切にサイズ変更されますが、水平方向では、ボタンの行がそこにあるかのように幅が維持されます。何が問題ですか ?
チェステーブルのみを使用してウィジェットを作成すると、レイアウトはウィジェットのサイズを適切に設定します。
私はコードを追加しています:
ウィンドウのコンストラクター:
ボタンを追加する関数では:
チェステーブル以外のすべてを削除する関数では、次のようになります。
チェステーブルのsizeHintは、次のように計算されます。
pyqt - サイズ変更後の GridLayout+ScrollArea ウィジェットの位置
内部に gridlayout を持つ scrollArea があり、それに QLabels を画像とともに追加します。アプリケーションが起動すると、正常に動作し、ラベルが正しく表示されます。
注: 現在のレイアウト スペースに収まるラベルの数を計算します。
私が最大化すると、それもうまくいきます:
しかし、復元を押すと、奇妙なことが起こります:
6 つのラベルのみが追加されていることがわかります (最初のスクリーン ショットと同じ) が、ここではそれらがすべて互いに重なり合って配置されています。
これは、ScrollArea と Layout の初期化コードです。
c++ - QGridLayout の addWidget がプロジェクトをブロックする
問題は単純に思えますが、2時間で解決しません。このレイアウトがあります:
「描画」(プロジェクトのグラフィカル部分) がプロジェクトの上端 (行 0、列 0 から列 1) を占める必要があります。
問題は、コンストラクターにどのような値を入れても、次のことです。
他のすべてのウィジェットはブロックされているようで、プログラムの実行中に対話できません。
古典的なコンストラクタで
問題はありませんが、ウィジェットの「描画」は目的の場所ではありません (2 列ではなく 1 列のみ)。
私がどこで間違っているか知っている人はいますか?
PS: ウィジェットにはレイアウト設定がありません (キーの最小高さを固定するための数字キーパッドは別として)。
c++ - QGridLayoutの行スパンが期待どおりに機能しない
2列にまたがるボタンを描画する方法は次のとおりです。
コードを実行すると、次のようになります。
baz
2行にまたがるボタンを取得するためにレイアウトを変更すると、失敗します。
これが私が得るものです:
qt - QAlignmentを使用するとQGridLayoutウィジェットが消える
私は次のものを持っています:
これはfiineを表示します。ただし、2行目に配置を追加すると、次のようになります。
ウィジェットが画面から消えます。QVBoxLayoutに入れて、QGridLayoutに追加するなど、上に揃えるためにすべてを試したと思います。ここに欠けているものはありますか?