私は PyQt にアイテムのグリッドを持っています。ユーザーがウィンドウ サイズを変更すると、それに応じて列の数を増減する必要があります。行数はスクロールエリアによって処理されるため、y 方向の変更について心配する必要はありません (それが重要な場合)。
QMainWindow の実装内で、すべてのウィンドウ調整に対してトリガーされる resizeEvent() 関数をオーバーライドできることがわかっています。ただし、それを使用して毎回グリッドを再構築するのは、非常に非効率的です。関数がどのように機能するかをテストするためだけに、resizeEvent に単に文字列を出力させました。これにより、ウィンドウの調整が少し遅くなり、視覚的に不完全になりました (スムーズではなくジッター)。おそらく、ウィンドウ サイズに対して単純な除算操作を実行して、列数を変更するのに十分なほど大きくなったか小さくなったかを確認しますが、それでも調整ごとに 100 回実行すると、遅延の問題が発生する可能性があります。グリッド全体の再構築には 1 秒もかかる場合があるため、ユーザーがウィンドウを操作しているため再構築する必要がないことが望ましいでしょう。
それを行うためのより効率的な方法はありますか、それとも resizeEvent が私の唯一のオプションですか? 理想的には、ユーザーがウィンドウの調整を終了したときにのみトリガーされるイベントが必要であり、発生したほぼすべてのピクセルの動きに対してトリガーされるイベントではありません (1 秒間の調整ごとに数百または数千回になる可能性があります)。 .
私は PyQt5 を使用していますが、PyQt4 に精通している場合は、PyQt5 のコンテキストで PyQt4 ソリューションを理解できます。C++ Qt4/5 ソリューションでも同じです。