2013-08-17 54 views
14

私はQTを初めて使用しています。私はそのモデルでQTableViewの動作を管理しました。 3つの列が固定されています。私はウィンドウを開いてもOKですが、ウィンドウのサイズを変更すると、QTableView自体のサイズは変更されますが、カラムの幅は変わりません。それを動作させるための組み込みの方法はありますか? QTableViewの辺に合わせて列のサイズを変更し、ウィンドウのサイズが変更されるたびに欲しい。カラムはQTableViewのサイズに自動的にリサイズされます

+0

いつも列の幅を同じにしますか?そうでない場合は、table-> horizo​​ntalHeader() - > setStretchLastSection(true)を呼び出して、最後の列の幅を引き伸ばすことができます。 –

答えて

17

サイズ変更された場合、QTableViewの最後の列がその親を塗りつぶすようにするためのヘッダーフラグがあります。

table_view->horizontalHeader()->setStretchLastSection(true); 

ただし、他の列のサイズは比例して変更されません。あなたにも、あなたは以下のようなものを自分の親のresizeEvent内側にそれを扱うことができることをやりたい場合:

void QParent::resizeEvent(QResizeEvent *event) { 
    table_view->setColumnWidth(0, this->width()/3); 
    table_view->setColumnWidth(1, this->width()/3); 
    table_view->setColumnWidth(2, this->width()/3); 

    QMainWindow::resizeEvent(event); 
} 

QParentクラスはQMainWindowのサブクラスです。あなたはクラスQHeaderViewためのオープンドキュメント、あなたはの外観と動作を設定する方法を見つける場合

QHeaderView* horizontalHeader() const; 
QHeaderView* verticalHeader() const; 

+0

私は2番目の部分をテストしていませんが、最初は機能しませんでしたが、ウィンドウをunresizableにすることにしました(私にはもっと意味があります) – khajvah

+0

比例的な列の幅を設定するには、resizeEventを上書きするのが最も簡単だが、 QMainWindowではなく、問題のQTableView。 – jtbr

3

ウィジェットQTableViewQTreeViewと(例えばQTableWidgetなど)、その派生クラスは、この2便利なメソッドを持っていますアイテムビューの行ヘッダーまたは列ヘッダー。言及Davy Jonesとして

  1. void QHeaderView::stretchLastSection(bool stretch)
    :あなたはこれらのいずれかの方法で、あなたの問題を解決することができます。

    例:あなたはQHeaderView ::ストレッチやQHeaderViewを設定することができますモード:: ResizeToContentsとして

    QTableView *table = new QTableView(); 
    table->horizontalHeader()->setStretchLastSection(true); 
    
  2. void QHeaderView::setResizeMode(ResizeMode mode)

    残念ながら、このメソッドには欠点があります。適用後、列(または行)のサイズを手動で(GUIで)またはプログラムで変更することはできません。

    例:彼らは、テーブルの幅に合うように

    QTableView *table = new QTableView(); 
    table->horizontalHeader()->setResizeMode(QHeaderView::Stretch); 
    
26

このコードは、均等に各列をstretchs。

table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); 

ドキュメント:

+0

私はあなたに今キスしたい、ちょうど冗談;-) ..私はこの行のために長い間見てきました..ありがとう –

+0

パーフェクト...これは、TableViewストレッチ/スケーリングの問題のための完璧なソリューションです..本当にありがとうロット.. – Maxx

関連する問題