2. Layout вроде как должен всегда изменять размеры по границам родителя. Если явно ему не задать фиксированные параметры.
4. Есть хороший пример Window Flags Example - там все флаги можно подобрать.
5. Для hide() не Unhide нужен, а show(). Есть и другие методы, setVisible() например.
Соответственно проверить можно isHidden(), isVisible().
3. Не используй вообще ui. Пиши все сам.
По 2. Создал фрейм, переместил в него лайоут (оба были просто на форме). Лайоут просто вставляется внутрь фрейма - и всё. Размеры фрейма меняешь - лайоут вообще никак не реагирует.
По 3. Что значит "не используй"; как отказаться от UI, если другого доступа к элементам формы нет? Самому динамические объекты создавать что ли? А есть ли смысл? Ведь тогда им тонны свойств нужно будет прописывать - много исходного кода + неудобно.