QTablewidget后来扩展(或绘制)

时间:2018-05-23 23:59:02

标签: c++ qt qtablewidget

我正在使用QTableWidget,当我打开包含QTableWidget的对话框时,我注意到QTableWidgetis后来被提取。 屏幕配置不同,但具有相同集QTableWidget的其他对话框没有此问题。

我知道是什么代码造成的。 由于verticlaHeader () -> setSectionResizeMode (QHeader :: Stretch),它看起来像是延迟延期。但问题是,在其他对话框中同样设置QTableWidget似乎并非如此。我已经使用setSectionResizeMode没有任何问题,但突然间我遇到了这个问题。

Result table image

上面的图片不是确切的图片。因为我无法截取屏幕截图以适应时机。

更准确地说,QTableWidget似乎在图片中展开,但QTableWidget的大小不会改变。细胞的大小发生变化。根据SectionResizeMode的设置,单元格的大小很小,并且增加了qtableWidget的高度。

void MyWidget::init() {

    QStringList horizontalHeader = QStringList() << "Max" << "Min";
    QStringList verticalHeader = QStringList() << "Velocity[m/s]" << "Acceleration[m/s²]" << "Density[kg/m³" << "Pressure[kg/(ms²)]";
    ui.PropertyTableWidget->setHorizontalHeaderLabels(horizontalHeader);
    ui.PropertyTableWidget->setVerticalHeaderLabels(verticalHeader);
    for (int i = 0; i < ui.PropertyTableWidget->columnCount(); ++i)
        ui.PropertyTableWidget->verticalHeaderItem(i)->setTextAlignment(Qt::AlignmentFlag(Qt::AlignLeft + Qt::AlignVCenter));

    ui.PropertyTableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ui.PropertyTableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ui.PropertyTableWidget->horizontalHeader()->setFixedHeight(24);
    ui.PropertyTableWidget->SetDelegateType(TABLE_DELEGATE_TYPE_ROW);
    ui.PropertyTableWidget->setItemDelegateForRow(0, new LineEditDelegate(ui.PropertyTableWidget, -FLT_MAX, FLT_MAX, EDIT_DECIMAL, UNIT_TYPE_VELOCITY));
    ui.PropertyTableWidget->setItemDelegateForRow(1, new LineEditDelegate(ui.PropertyTableWidget, -FLT_MAX, FLT_MAX, EDIT_DECIMAL, UNIT_TYPE_ACCELERATION));
    ui.PropertyTableWidget->setItemDelegateForRow(2, new LineEditDelegate(ui.PropertyTableWidget, -FLT_MAX, FLT_MAX, EDIT_DECIMAL, UNIT_TYPE_DENSITY));
    ui.PropertyTableWidget->setItemDelegateForRow(3, new LineEditDelegate(ui.PropertyTableWidget, -FLT_MAX, FLT_MAX, EDIT_DECIMAL, UNIT_TYPE_PRESS));
    ui.PropertyTableWidget->EnableRowRemove(false);
}

1 个答案:

答案 0 :(得分:0)

尝试一次,我希望它会起作用:

桌头服装:

horizontalHeader()->setResizeMode(QHeaderView::Fixed );
horizontalHeader()->setDefaultAlignment(Qt::AlignHCenter);
horizontalHeader()->setStretchLastSection(true);