Здравствуйте, гость ( Вход | Регистрация )
DmP | Дата 15.6.2009, 10:41 |
т.ч. ждать нам его придется до версии Qt 5.0 Да чем нам, подождем. ![]() |
|
SABROG | Дата 15.6.2009, 9:04 |
Почему такого важного метода нет, хотя такой метод выспрашивают у тролей еще с начальной 4.0 версии? Тут достаточно было бы метода setSizeHint для QWidget'a. Но вот тролли пока не могут его реализовать из-за различных факторов и конфузов, т.ч. ждать нам его придется до версии Qt 5.0 (это если они вообще решать его реализовывать): http://www.qtsoftware.com/developer/task-t...y&id=143749 |
|
DmP | Дата 14.6.2009, 23:13 |
Кстати я заметил, что многих людей интересуют совершенно бесполезные вещи название которым "сделать красиво". Мало кто задает вопросы непосредственно по алгоритмам. Всем нужны стили, анимация, рюшечки, да еще чтобы это всё было кроссплатформенно. Тут же дело не в красоте ![]() Почему такого важного метода нет, хотя такой метод выспрашивают у тролей еще с начальной 4.0 версии? |
|
SABROG | Дата 14.6.2009, 22:46 |
можешь погуглить на тему "qdockwidget resize", этот вопрос многих мучает. Кстати я заметил, что многих людей интересуют совершенно бесполезные вещи название которым "сделать красиво". Мало кто задает вопросы непосредственно по алгоритмам. Всем нужны стили, анимация, рюшечки, да еще чтобы это всё было кроссплатформенно. Недавно человек на форуме вопрос задавал как адаптировать приложение под разные разрешения экрана на мобильнике. Я задумался и мне стало грустно, когда я вспомнил, что все размеры задаются не в процентах/соотношениях, а в пикселях. Был у меня старенький компьютер с монитором 14' я сидел на разрешении 800x600, проклинал программистов некоторых, которые писали программы на дельфи, не влезающие в мой экран. А недавно погонял стиль "Skulpture" и понял, что все эти подгонки, цветов, размеров, шрифтов - коту под хвост при использовании разных стилей, т.к. каждый из них использует свои настройки. |
|
DmP | Дата 14.6.2009, 22:07 |
Забавно, задача появившаяся из ниоткуда и ни для чего. Это не задача ![]() А если интересно откуда она взялась такая задача, то можешь погуглить на тему "qdockwidget resize", этот вопрос многих мучает. Собственно почему бы тогда не разобрать этот QByteArray и не сэмулировать состояние виджетов, вместо использования хака? Такое решение есть в инете, но по сути этот, тот же хак, мне мое решение больше нравится. Кстати, вопросы на эту тему и на этом форуме поднимались не раз, например: http://www.forum.crossplatform.ru/index.ph...ckwidget+resize или http://www.forum.crossplatform.ru/index.ph...ckwidget+resize |
|
SABROG | Дата 14.6.2009, 21:41 |
А кто сказал что он пустой? ![]() Забавно, задача появившаяся из ниоткуда и ни для чего. SABROG, если тебе не понятно зачем это все, так зачем ты начал это все использовать? ![]() А я и не начинал, увидел твой способ получения layout'а и задумался, а нет ли способа легче и нашел. Работает аналогично QMainWindow::restoreState(). Собственно почему бы тогда не разобрать этот QByteArray и не сэмулировать состояние виджетов, вместо использования хака? |
|
DmP | Дата 14.6.2009, 21:26 |
P.S.: кстати я так и не понял зачем это нужно. Зачем устанавливать предварительный размер пустому доквиджету? Зачем вообще в программе нужен пустой доквиджет? Рисовать на нем чтоль? На худой конец работает setMinimumHeight() для виджета. А если не пустой, то он всё равно изменится при размещении в него виджетов. А там можно и setMinimumHeight отрубить при добавлении. А кто сказал что он пустой? ![]() Была тривиальная задача, при создании QMainWindow, расставить док-виджеты с нужными мне размерами, при этом оставляя возможность менять размер их в дальнейшем, и не переопределяя sizeHint() у QTableWidget и у QTextEdit. SABROG, если тебе не понятно зачем это все, так зачем ты начал это все использовать? ![]() Да следует уточнить, что данный метод должен вызываться, после создания всех доков. И действует не на какой то док отдельно, а в целом задет размер стороны, в данном случай всех нижних. Работает аналогично QMainWindow::restoreState(). |
|
SABROG | Дата 14.6.2009, 20:06 |
А зачем dockAreaLayout в скобки брать? А хрен его знает, наверно планировал приводить к другому указателю, я вообще думал, что ты об этих "())->" ![]() Просто если кому интересно, то тролли в своем факе предлагают sizeHint переопределять у виджета, который будет помещаться на доквиджет: http://www.qtsoftware.com/developer/faqs/550 Это только предположение Скорее всего ты прав, на этапе создания главной формы детки еще не знают своего rect'a.
Соответственно так все работает
P.S.: кстати я так и не понял зачем это нужно. Зачем устанавливать предварительный размер пустому доквиджету? Зачем вообще в программе нужен пустой доквиджет? Рисовать на нем чтоль? На худой конец работает setMinimumHeight() для виджета. А если не пустой, то он всё равно изменится при размещении в него виджетов. А там можно и setMinimumHeight отрубить при добавлении. |
|
DmP | Дата 14.6.2009, 19:03 |
В каком виде? Вот так, как и написано: ![]() ((QMainWindowLayout*)layout())->layoutState.dockAreaLayout.docks[QInternal::BottomDock].rect = QRect(0, 0, 0, 100); А зачем dockAreaLayout в скобки брать? О ровно такой же правильный как и жесткая привязка к названию объекта "_layout" и вообще как и сам хак. ![]() О нет, поменять имя класса проблематично, нужно править кучу кода. А поменять имя объекта - всего одна строка и ни чему это не повредит. А то, что хак может перестать работать в любой следующей версии, так это да, не спорю. ![]() |
|
BRE | Дата 14.6.2009, 18:20 |
Кстати почему такое не работает?
Это только предположение, я не проверял. Думаю это из-за того, что rect может быть не валиден ( height <= 0 || width <= 0 ). Конструктор по умолчанию, как раз создает такую область. В этом случае, ты устанавливаешь height, а width не изменяется. |
|
Просмотр темы полностью (откроется в новом окне) | |
![]() |
Текстовая версия | Сейчас: 3.6.2023, 1:37 |