2013-07-08 8 views
16

は、ここに私のソフトウェアの印刷画面です:あなたが見ることができるように、最初のQTableVIewヘッダーが幅の100%を取ることはありませんQTableViewの幅を100%にする方法を教えてください。

。実際、フィールド「サイズ」の右側に小さい垂直の空白があります。

QTableViewの幅の100%を取得するにはどうすればよいですか?

+1

[Qtableview内部QStandardItemModel]の可能複製(http://stackoverflow.com/questions/16931569:私の場合には、モデルのheaderData機能では、私は次のようでしたが(resizeColumnsToContents()どこかを呼び出す必要があります)/qstandarditemmodel-inside-qtableview) –

答えて

26

Qt 5を使用している場合、QHeaderView::setResizeMode()は利用できなくなります。代わりにQHeaderView::setSectionResizeMode()を使用できます。ただ、すべての列のためにそれを呼び出す:

for (int c = 0; c < ui->tableView->horizontalHeader()->count(); ++c) 
{ 
    ui->tableView->horizontalHeader()->setSectionResizeMode(
     c, QHeaderView::Stretch); 
} 
+1

同じ問題、まだ動作しません。最後のセクションは伸びていますが、最初のセクションは伸びていません。 –

+2

それはQt 5.1で私にとっては役に立ちます。このコードでセクションのサイズ変更モードを設定する前に、モデルをテーブルビューに設定しましたか?まだ列がない場合、このコードは何もしません。 –

+0

私のためにも動作します!ありがとう –

12

view->horizontalHeader()->setStretchLastSection(true)を使用すると、最後の列が空き領域に拡張されます。

さらに、view->horizontalHeader()->setResizeMode(QHeaderView::Stretch)を使用して、同じ幅の列を指定します。

+3

@ user2429940 QtCreator/Designerを使用している場合は、プロパティセクションの – Huy

+0

にあります。最初のコマンドは機能しますが、2番目のコマンドは機能しません。つまり、最後の列は伸びていますが、2つの列は同じサイズではありません。 –

10

ここでのみ使用して動作します:

ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); 

私はQtの5.2を使用しています!

0

テーブルのすべてのセルに列幅を分散するのに苦労しました。

QVariant headerData(int section, Qt::Orientation orientation, int role) const override { 
    if (orientation == Qt::Vertical) { 
    return QVariant(); 
    } 
    if (role == Qt::SizeHintRole) { 
    auto* p = qobject_cast<QTableView*>(QObject::parent()); 
    if (p == nullptr) return QVariant(); 
    // Parent total width. 
    const int w = p->viewport()->size().width() - 
     p->verticalScrollBar()->sizeHint().width(); 
    QSize qs; 
    // Default height. 
    qs.setHeight(p->verticalHeader()->defaultSectionSize()); 
    // Width per column. 
    switch (section) { 
     case 0: 
     qs.setWidth(w * 0.45); 
     return QVariant(qs); 
     case 1: 
     qs.setWidth(w * 0.45); 
     return QVariant(qs); 
     // ... others 
     default: ; 
    } 
    return QVariant(); 
    } 
    if (role == Qt::DisplayRole) { 
    // header titles. 
    } 
} 
関連する問題