QHeaderView Как узнать ширину ВСЕЙ области заголовка ? |
Здравствуйте, гость ( Вход | Регистрация )
QHeaderView Как узнать ширину ВСЕЙ области заголовка ? |
flankerr |
16.9.2009, 17:19
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
Есть диалог на нём есть QTreeView надо узнать ширину заголовка для того чтобы правильно установить размеры колонок.
QTreeView::size().width(); выдаёт адекватный размер ,но ширина заголовка(QHeaderView) меньше чем ширина QTreeView, поэтому использовать ширину QTreeView нельзя иначе появляется горизонтальная прокрутка. header()->viewport()->size().width(); header()->size().width(); Эти два метода выдают одинаковый результат и он тоже не тенят на искомый (на порядок меньший) Сообщение отредактировал flankerr - 16.9.2009, 17:37 |
|
|
flankerr |
17.9.2009, 18:32
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
SABROG, а можно более подробно ?
|
|
|
SABROG |
17.9.2009, 20:54
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
SABROG, а можно более подробно ? Предыстория такова. Обычно для инициализации некоторых данных используется конструктор виджета, в то время как сам виджет еще не показывается на экране, он еще не создан, у него нет каких-то валидных размеров, валидных координат, еще не сработали компановщики, которые меняют как положение виджета, так и его размер. Поэтому нам необходимо выполнить некоторый метод уже после того, как виджет выполнит все действия по инициализации и будет готов к работе с пользователем. Обычно возвращение в цикл событий или запуск цикла событий говорит о том, что всё готово к работе и можно всё потрогать. Поэтому у нас только один вариант - дождаться цикла событий и выполнить нужный нам метод. Сделать это можно - поставив в очередь выполнение слота. Варианта 2: QTimer::singleShot() или QMetaObject::invokeMethod() с параметром Qt::QueuedConnection. Не знаю почему, но тролли предпочитают именно QMetaObject::invokeMethod() в таких приложениях как: /examples/dbus/pingpong /examples/dbus/remotecontrolledcar /examples/network/torrent /examples/xmlpatterns /demos/browser /demos/sqlbrowser /tools/assistant /tools/designer |
|
|
Текстовая версия | Сейчас: 18.12.2024, 16:52 |