Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: dd от Октябрь 11, 2010, 00:56



Название: resizeEvent при старте
Отправлено: dd от Октябрь 11, 2010, 00:56
Задача простая.
На главном окне сидит виджет таблицы.
Таблица растягивается layout - ом.
Нужно, чтобы столбцы таблицы выравнивались в соответствии с размерами окна.
Создавать наследованный класс таблицы не хочу.
Делаю так:

Код:
void MainWindow::resizeEvent ( QResizeEvent * event )
{
    QWidget::resizeEvent(event);
    ui->m_tableWidget->setColumnWidth(0, 100);
    ui->m_tableWidget->setColumnWidth(1, ui->m_tableWidget->geometry().width() - 100 - 2);
    qDebug() << "resizeEvent " << ui->m_tableWidget->size();
}

Проблема следющая - при старте программы ширина столбцов выставляется неправильно,
так как внутри функции resieEvent дочепрние виджеты еще не растянуты layout-ом.
То есть в дебаг печататеся QSize(100, 30).
При растягивании окна мышом все нормализуется.
Как решить проблему?
Конечно понимаю, что можно по таймеру при старте ресайзить, но это не айс.


Название: Re: resizeEvent при старте
Отправлено: GreatSnake от Октябрь 11, 2010, 08:20
Цитировать
Конечно понимаю, что можно по таймеру при старте ресайзить, но это не айс.
Это почему? Можно, конечно, перед show() вызвать adjustSize(), но не факт что поможет, т.к. qt-ишные виджеты сами используют таймеры.


Название: Re: resizeEvent при старте
Отправлено: Aleksey_Zh от Октябрь 11, 2010, 11:07
Если я все правильно понял -  можно глянуть в сторону QSettings и загружать размеры принудительно из файла...


Название: Re: resizeEvent при старте
Отправлено: dd от Октябрь 11, 2010, 11:24
>> Это почему?
Не хотелось по такому пустяку нагромождать лишний код. Но, возможно, придется. Спасибо за ответы.


Название: Re: resizeEvent при старте
Отправлено: Akon от Октябрь 11, 2010, 20:52
делать однократно в MainWindow::showEvent()