Название: QTableWidget в QDialog без появления слайдеров
Отправлено: YvenTitan от Июль 29, 2019, 11:04
Здравствуйте Необходимо сделать таблицу в QDialog. Делаю следующим образом через QTableWidget, но появляются слайдеры. Этот код вызывается при нажатии кнопки в ui QMainWindow. Скрин получаемого окна прикрепляю. Можете подсказать, как это можно исправить? //Window QDialog dialogDeviceInfo(this); dialogDeviceInfo.setWindowFlags(dialogDeviceInfo.windowFlags() &~ Qt::WindowContextHelpButtonHint); //delete "?" from window title //Table QTableWidget *tableWidget = new QTableWidget(10,2,this); tableWidget->verticalHeader()->setVisible(false); tableWidget->horizontalHeader()->setVisible(false); //hLayout QHBoxLayout *hTableLayout = new QHBoxLayout; hTableLayout->addWidget(tableWidget); //vLayout QVBoxLayout *vLayout = new QVBoxLayout; vLayout->addLayout(hTableLayout); //Fill table for(int i = 0; i < 10; ++i){ tableWidget->setItem(i,1,new QTableWidgetItem(QString::number(i)+QString::number(1))); tableWidget->setItem(i,2,new QTableWidgetItem(QString::number(i)+QString::number(1))); } tableWidget->resizeColumnsToContents();
//Calculation height of table int sumHeightRowsTable = 0; for(int i = 0; i < tableWidget->rowCount(); i++) sumHeightRowsTable += tableWidget->rowHeight(i); int heightWindow = sumHeightRowsTable + vLayout->contentsMargins().top() + vLayout->contentsMargins().bottom();
//Calculation width of table int sumWidthColumnsTable = 0; for(int i = 0; i < tableWidget->columnCount(); i++) sumWidthColumnsTable += tableWidget->columnWidth(i);
tableWidget->setMaximumHeight(sumHeightRowsTable + 2*tableWidget->lineWidth()); tableWidget->setMaximumWidth(sumWidthColumnsTable);
tableWidget->setEditTriggers(QTableWidget::NoEditTriggers); dialogDeviceInfo.setMinimumSize(sumWidthColumnsTable + 70,heightWindow + 70); dialogDeviceInfo.setMaximumSize(static_cast<int>(sumWidthColumnsTable*1.2),static_cast<int>(heightWindow*1.2)); dialogDeviceInfo.setLayout(vLayout); dialogDeviceInfo.exec();
Название: Re: QTableWidget в QDialog без появления слайдеров
Отправлено: Fregloin от Июль 29, 2019, 11:21
Логичный вывод - отключить слайдеры или программно или через инспектор обхектов (см. Horizontal/Vertial ScrollBar или как то так, давно не работаю с Qt)
Название: Re: QTableWidget в QDialog без появления слайдеров
Отправлено: YvenTitan от Июль 29, 2019, 13:35
Спасибо, помогает А можно как-то вычислить расстояние между краями QDialog и краями QTableWidget (на рисунке во вложении обозначены L1 и L2) до вызова функции exec() для QDialog?
Название: Re: QTableWidget в QDialog без появления слайдеров
Отправлено: Fregloin от Июль 29, 2019, 15:54
Не понимаю за чем это нужно. Вам бы потренероваться с Layout системой для начала
Название: Re: QTableWidget в QDialog без появления слайдеров
Отправлено: YvenTitan от Июль 29, 2019, 16:03
Возможно, строк будет много и слайдер будет нужен, чтобы все строки уместились в окне
|