1

QMainWindowがあります。

QMainWindow内には、中央のウィジェットがあります。

中央ウィジェットには、QVBoxLayoutがあります。

このQVBoxLayoutに、3つのウィジェットを追加しました。1つは、QGridLayoutを持ついくつかのラベルを持つウィジェットです。もう1つは水平線です。

3番目はQTableViewです。問題は、QMainWwindowを展開しようとすると、サイズ変更ポリシーを設定したかどうかに関係なく、TableViewが展開されず、展開されたQMainWindowの残りの部分に不当に空白の領域が残ることです。

ウィンドウのサイズが変更されたときにテーブルを拡張/サイズ変更する方法を教えてもらえますか?

関連するコードは次のとおりです。

`

statInfoWidget = new Static_Info(TagN);
QWidget *widget = new QWidget;
setCentralWidget(widget);
QFrame *hor_line = new QFrame();
hor_line->setFrameShape( QFrame::HLine );
QVBoxLayout *layout = new QVBoxLayout();
layout->setMargin(2);

layout->addWidget(statInfoWidget);
layout->addWidget( hor_line );
Table = new QTableView(this);
 temp = Table;
 t = new TableLayout(statInfoWidget);
 Table->setModel(t);
 Table->verticalHeader()->hide();
 Table->horizontalHeader()->hide();
 Table->setShowGrid(false);
 Table->setContextMenuPolicy(Qt::CustomContextMenu);
 //Table->setColumnWidth(2,290);
// Table->setColumnWidth(0,25);
// if(num_version == 1)
//     Table->setColumnWidth(1,0);
// else
//   Table->setColumnWidth(1,43);
// Table->setColumnWidth(3,210);
// Table->setColumnWidth(4,170);
// Table->setColumnWidth(5,50);
 statInfoWidget->setStyleSheet("background: rgb(153,185,193);color:rgb(0,0,0); font-family:Tahoma;font-size:19px; border: 0px outset rgb(255,255,255);gridline-color: #669933;"
                       "selection-background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #486909, stop: 1 white);");
 Table->setStyleSheet("background: rgb(153,185,193);color:rgb(0,0,0); font-family:Tahoma;font-size:15px; font-weight:bold; border: 0px outset rgb(255,255,255);gridline-color: #669933;"
                       "selection-background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 transparent, stop: 1 white);");
// layout->addWidget(button1);
 QSizePolicy policy = Table->sizePolicy();
 policy.setVerticalStretch(1); 
 policy.setHorizontalStretch(1); 
 Table->setSizePolicy(policy);
 layout->addWidget(Table);
 widget->setLayout(layout);

`

4

1 に答える 1

2

次のことを検討してください。

Table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);

テーブル内の 1 つの列だけのサイズを変更することもできます。これは、列インデックスを渡すことで実行できます。

Table->horizontalHeader()->setResizeMode(columnIndex, QHeaderView::Stretch);
于 2013-03-08T16:05:32.103 に答える