2

私は最近 Qt に戻ってきました (以前のプロジェクトで試してみましたが、それを選択しませんでした)。3 ~ 7 日間のエピソード ガイド データ (EPG) を表示する TV ガイド スタイルのアプリケーションを作成しています。このデータはデータベース ソースから供給されます。

現在、QGridLayout を使用するか、QHBoxLayouts (エピソード データ用) と左側の単一の QVBoxLayout (チャンネル名/アイコン用) を組み合わせて使用​​するかを判断するのに苦労しています。QGridLayout に関する私の主な関心事は、それを「30 分」のブロックに分割することですが、たとえば 3:45 にプログラムが開始された場合、それが正しく機能するかどうかはわかりません。GUI で何をしようとしているのかをよりよく理解するために、このスクリーンショットを見ることができます…</p>

http://www.itvt.com/files/u3/AT&T-u-verse-tv-epg-2009.jpg

余談ですが、このセグメント (つまり、午前 3 時から午前 4 時 30 分) だけを表示し、10 チャンネルと言う場合、垂直/水平スクロールを実装するのにどのオプションがより簡単でしょうか? その動作のために別のウィジェットに貼り付ける必要がありますか?

4

2 に答える 2

1

QGridLayout を使用します。

説明:

QVBoxLayoutと QHBoxLayoutでは、行ごとの列数は固定されていません (または、これらのレイアウトを別の方法で使用する場合は逆になります)。たとえば、次のようなものがあります。

|----------------------|
|------|------|--------|
|----------|-----------|

行に項目を追加すると、その行は他に干渉することなく再レイアウトされるため、列が整列しなくなります。一部の GUI では非常に便利ですが、必要な場合は実用的ではないと思います。

次に、QGridLayout があります。これは、GUI の方法です。すべての列が整列されます。したがって、グリッドを 15 分の列に分割し、ウィジェットを複数の列にまたがることができます。例:

0    15   30   45   60   75   90
|----|----|----|----|----|----| 6 x 15 min episodes
|---------|-------------------| 30 min + 1 hour episodes
|-----------------------------| 1h30 episode
|----|---------|---------|----| 2 x 15 min + 2 x 30 min episodes

位置合わせは自動です。

: QVBoxLayout と QHBoxLayout を使用すると、前の例は (特定のコードなしで) 次のようになります。

0    15   30   45   60   75   90
|----|----|----|----|----|----|
|--------------|--------------|
|-----------------------------|
|------|-------|-------|------|

行内のすべてのセルが同じサイズになっていることに注意してください。これは変更できますが、セル サイズを手動で処理する必要があります...

于 2012-09-29T10:48:42.837 に答える
0

QGridLayout をお勧めします。これは、QBoxLayout をたくさん使用した場合よりも、すべてを簡単に配置できるためです。QGridLayout を使用すると、addWidgetおよびメソッドには、有効に利用できるaddLayoutオプションがあります。columnSpanたとえば、各列を 15 分にすると、45 分のショーは 3 つの列にまたがることになります。

通常、QLayout でスクロールを実装することはありません。お勧めしません。代わりに、QGridLayout のrowMinimumHeightandrowMaximumHeightを同じ値に設定して、各行が同じ高さであることを確認してから、列に対して同じことを行うことができます。次に、レイアウト (およびエンケース ウィジェット) を QAbstractScrollArea に配置し、スクロール バーのステップ サイズを行と列の高さに設定して、スクロールするとチャネルからチャネルへ、時間セグメントから時間セグメントへとステップするようにします。継続的にスクロールするよりも。

于 2012-09-29T10:52:59.623 に答える