crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как сделать просчёт размеров всех элементов окна и самой формы до вызова show
flankerr
  опции профиля:
сообщение 27.11.2008, 18:14
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


1. Как сделать просчёт размеров всех элементов окна и самой формы до вызова show ?
т.е. если до вызова show у дилога спросить его ширину он выдаст фигню (в том случае если рамер не заан фикисровано)


2.Как узнать ширрину виджета таблицы ? ВНИМАНИЕ! сумма ширин всех столбцов НЕ равна (а точнее меньше) ширины виджета таблицы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.11.2008, 10:46
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


1. посмотри void QWidget::showEvent ( QShowEvent * event ) [virtual protected], для этого правда тебе прийдется переопределять класс виджета.
2. А что говорит geometry и Геометрия окна?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 28.11.2008, 12:00
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


Зачем мне эвент то?)) если эвент придёт ДО вызова show то элементы ещё будут НЕ просчитаны. А если он придёт после вызова show то диалог уе будет выведен на экран. Функция show инициаолизирует элементы и выводит их на экран.
Впрос в том КАК инициализировать размеры НО не выводить на экран ? Конечно можно тупо залезть в show и переписать исходник со всемм вытекающими но может есть какойнить ЛЕАЛЬНЫЙ способ ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.11.2008, 12:50
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


А ты попробуй создать тестовый проект, набросать на виджет виджетов и переопределить showEvent:
void test::showEvent ( QShowEvent *pEvent)
{
    QList<QWidget*> listChild = findChildren<QWidget*>();
    foreach( QWidget *pWnd, listChild)
    {
        QString sz = pWnd->objectName();
        const QRect &rect = pWnd->geometry();
        int n = 0;
    }

    QWidget::showEvent( pEvent);
}
и увидишь, что координаты дочерних виджетов правильные!

Как видишь в данном случае pEvent не нужен. :)

Сообщение отредактировал ViGOur - 28.11.2008, 12:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 19:59