Russian Qt Forum
Сентябрь 30, 2024, 12:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: resizeEvent при старте  (Прочитано 3843 раз)
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).
При растягивании окна мышом все нормализуется.
Как решить проблему?
Конечно понимаю, что можно по таймеру при старте ресайзить, но это не айс.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Октябрь 11, 2010, 08:20 »

Цитировать
Конечно понимаю, что можно по таймеру при старте ресайзить, но это не айс.
Это почему? Можно, конечно, перед show() вызвать adjustSize(), но не факт что поможет, т.к. qt-ишные виджеты сами используют таймеры.
Записан

Qt 5.11/4.8.7 (X11/Win)
Aleksey_Zh
Гость
« Ответ #2 : Октябрь 11, 2010, 11:07 »

Если я все правильно понял -  можно глянуть в сторону QSettings и загружать размеры принудительно из файла...
Записан
dd
Гость
« Ответ #3 : Октябрь 11, 2010, 11:24 »

>> Это почему?
Не хотелось по такому пустяку нагромождать лишний код. Но, возможно, придется. Спасибо за ответы.
Записан
Akon
Гость
« Ответ #4 : Октябрь 11, 2010, 20:52 »

делать однократно в MainWindow::showEvent()
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.136 секунд. Запросов: 23.