QTablewidget позже расширяется (или рисуется) - PullRequest
0 голосов
/ 24 мая 2018

Я использую QTableWidget, и когда я открываю диалог с QTableWidget, я замечаю, что QTableWidgetis рисуется позже.Конфигурация экрана отличается, но другие диалоги с таким же набором QTableWidget не имеют этой проблемы.

Я знаю, какой код вызвал это.Это выглядит как позднее расширение из-за verticlaHeader () -> setSectionResizeMode (QHeader :: Stretch)Проблема, однако, в том, что установка QTableWidget одинаково в других диалогах не выглядит так.Я использовал setSectionResizeMode без проблем, но внезапно у меня возникла эта проблема.

Result table image

Изображение выше не является точным изображением.Потому что я не могу сделать снимок экрана, чтобы соответствовать времени.

Чтобы быть более точным, QTableWidget кажется расширенным на картинке, но размер QTableWidget не изменяется.Размер ячейки меняется.Размер ячейки мал и увеличивается на высоту qtableWidget в соответствии с настройкой SectionResizeMode.

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 голосов
/ 24 мая 2018

Попробуйте, надеюсь, это сработает:

Костюм заголовка таблицы:

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