1

Qt v4.7.1でQt DesignerのQTableWidgetを使用すると、うまくいけば単純な問題が発生します。QTableWidget を 3x3 グリッドに設定してダイアログを作成し、スクロールバーなしで 3x3 グリッドを正確に表示するようにテーブルの初期サイズを設定したいと思います。テーブルをこれより大きくしたり小さくしたりしたくありません。次に、ダイアログの初期サイズ (固定サイズにすることもできます) を、このテーブルに必要な正確なサイズに設定したいと考えています。

Qt Designer で次の手順を実行しました。

  1. 新しいダイアログを作成します (この例では、ボタンのないダイアログを使用します)。
  2. QTableWidget にドラッグします。
  3. テーブルをダブルクリックし、3 つの行 (1、2、3 と呼びます) と 3 つの列 (同様に) を設定し、[OK] をクリックします。
    • テーブルは、最初にドラッグしたときの空のテーブルと同じサイズになりました。これは 3 列には十分な幅がないため、水平スクロールバーがあり、3 行には高すぎるため、空のスペースがたくさんあります。底に。
  4. ダイアログを右クリックし、「グリッドにレイアウト」(または水平/垂直) を選択します。
    • テーブルのサイズが変更され、必要以上に大きいダイアログが表示されるようになったため、すべての行/列を表示できますが、右側と下部に多くの空きスペースがあります。
  5. ダイアログを右クリックして、「サイズを調整」と言います。
    • テーブルは初期サイズに戻ります。水平スクロールバーでは十分な幅がなく、高すぎます。ダイアログは、このテーブルに合わせてサイズ変更されます。

テーブルに合わせてサイズ変更されたダイアログは正しいです。しかし、その内容に合わせてテーブルのサイズを変更するにはどうすればよいですか?

私は他の多くのことを試しました。テーブルのサイズ ポリシーを「fixed,fixed」または「minimum,mi​​nimum」に変更しますが、初期サイズをコンテンツと一致しないサイズに設定したいと考えています。理想的には、テーブル/ダイアログで正しい初期サイズのみを設定し、ユーザーがダイアログを小さくできるようにしたい (スクロールバーが追加されます) が、サイズを固定する必要がある場合、それは世界の終わりではありません。

Qt Designer でこれを行うことは可能ですか、それともコードでサイズを設定する必要がありますか?

返信ありがとうございます。

4

2 に答える 2

2

QTableWidget がサイズを強制しない限り、QDialog も強制しないことに注意してください。したがって、必要なのは QTableWidget のサイズを修正することです。QDialog はこれとは何の関係もありません。QTableWidget が別のサイズを強制したい場合、レイアウトは QDialog のサイズを変更しようとします。

しかし、QTableWidget のサイズを特定の行数/列数に設定することは、私の知る限り、少なくとも QtDesigner 内では不可能です。

これを実現するには、少しコードを書く必要があります。コードは、列の幅と行の高さ (ヘッダーを含む) を要求し、ウィジェットの境界線を追加する必要があります。次に、 を使用してこのサイズを設定しui->tableWidget->setFixedSize(...)ます。ユーザーに対してこれを有効にする場合は、列/行のサイズ変更にも対応する必要があります。


固定セル サイズと非表示ヘッダーの場合、手動コードを使用せずに (完全に QtDesigner で) 解決策が考えられます。

  • (horizo​​ntal|vertical)HeaderVisible = false に設定
  • (horizo​​ntal|vertical)HeaderDefaultSectionSize = (fixedValue) を設定します。
  • (horizo​​ntal|vertical)HeaderMinimumSectionSize = (fixedValue) を設定します。
  • QTableWidget のサイズをサイズの合計に設定します。QTableWidget の固定合計サイズに (列数 + 1) および (行数 + 1) ピクセルを追加することを忘れないでください。
于 2012-05-22T11:40:18.177 に答える
1

固定セル サイズの場合、setFixedSize と QSizePolicy::Fixed を QtDesigner から直接使用できます。

コンテンツの長さに合わせて列/行のサイズを変更する場合は、コードで resizeColumn(s)[Row(s)]ToContents を使用します。

QDialog のサイズ変更にサイズ変更を追加する場合は、Dialog の resizeEvent にコードを記述します。

テーブル セルの動的なサイズ変更は、QtDesigner からではなく、コードからのみ可能です。

于 2012-05-22T12:00:50.190 に答える