Я использую QTableWidget
, и когда я открываю диалог с QTableWidget
, я замечаю, что QTableWidgetis
рисуется позже.Конфигурация экрана отличается, но другие диалоги с таким же набором QTableWidget
не имеют этой проблемы.
Я знаю, какой код вызвал это.Это выглядит как позднее расширение из-за verticlaHeader () -> setSectionResizeMode (QHeader :: Stretch)
Проблема, однако, в том, что установка QTableWidget одинаково в других диалогах не выглядит так.Я использовал setSectionResizeMode
без проблем, но внезапно у меня возникла эта проблема.
Изображение выше не является точным изображением.Потому что я не могу сделать снимок экрана, чтобы соответствовать времени.
Чтобы быть более точным, 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);
}