Форум русскоязычного сообщества Ubuntu


Автор Тема: Мышевозный быдлокодинг с Qt4 - привязка размера областей к размерам окна  (Прочитано 4448 раз)

0 Пользователей и 1 Гость просматривают эту тему.

tartan

  • Автор темы
  • Гость
Пишу одну программку - по сути просто жирный скрипт, наверное - база данных где-то на полторы-две тысячи строк и пара окон для работы с ней, для проведения инвентаризаций (кстати, годится ли для этого QtSQL?), и возник у меня вопрос: как в QtCreator в дизайнере интерфейсов сделать table view или table widget, размер которого был бы "вся область окна, не занятая другими элементами", а не фиксированный. Где это в самом креаторе можно поправить?

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Тебе нужно использовать Layout'ы для этого. В работе с интерфейсом в Qt это центральное понятие. Ты создаёшь Layout в виджете и складываешь дочерние виджеты в этот Layout и Qt уже занимается расчётом и изменением размеров дочерних виджетов при изменении размеров окна.

В частном случае создания главного окна внутри которого всё рабочее пространство занимает один виджет, можно заменить centralWidget у QMainWindow.

Маленькая подсказка: перетащив GridLayout из панели доступных виджетов на свой виджет ты ничего не добьёшся. Нужно сделать правый клик на своём виджете и в подменю "компановка" (кривой перевод, лучше бы оставили Layout и в этом месте непереведённым) выбрать необходимый тебе Layout.

Цитировать
база данных где-то на полторы-две тысячи строк и пара окон для работы с ней, для проведения инвентаризаций (кстати, годится ли для этого QtSQL?)
Про QtSQL, вполне годиться. Это просто API чтобы коннектиться к базе и запускать запросы, плюс несколько классов для представления результатов запросов в пользовательском интерфейсе без особого гемороя.

tartan

  • Автор темы
  • Гость
Угу, я сразу подумал, что layout может помочь, но не знал, как - пытался там справа внизу в свойствах шебуршить. Понял, спасибо.

// Локализаций не использую с девяностых - в переведённые профессиональными студентами эрпэгэшки играть было гораздо сложнее, чем в оригинальные версии, и половина пасхалок пропадала.

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Цитировать
// Локализаций не использую с девяностых - в переведённые профессиональными студентами эрпэгэшки играть было гораздо сложнее, чем в оригинальные версии, и половина пасхалок пропадала.
Хороший подход, а то RPG под названием QtCreator в локализовнной версии уж как-то больно не радует своими "Заголовочными" и "Исходниками" :)

tartan

  • Автор темы
  • Гость
Всё равно не понял, как вот такой ерунды избежать? Что где выставить?



А, всё, победил. Grid layout в... эээ... родительском, наверное, виджете. Блин, удобно.
« Последнее редактирование: 08 Июня 2010, 01:03:50 от tartan »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5551
  • Все по палатам!
    • Просмотр профиля
А, всё, победил.
Так можно дизайнером и не пользоваться (лишняя прослойка). Посмотри примеры - там есть без форм, достаточно просто.
Извините, я все еще учусь

tartan

  • Автор темы
  • Гость
Всё со временем. Если будет нужно. Я пока просто хочу немного облегчить себе работу. А так я прекрасно знаю, что без графики удобнее.

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Цитировать
Так можно дизайнером и не пользоваться (лишняя прослойка). Посмотри примеры - там есть без форм, достаточно просто.
На первых парах конечно стоит два три простых приложения без дизайнера сделать, чтобы понять как объекты друг с другом взаимодействуют, а потом всё же на него лучше переходить. Очень код очищается от тривиальных раскидываний элементов по форме. Да и дизайн переделать можно в любой момент не меняя кода, главное только имена объектов оставить неизменными.

tartan

  • Автор темы
  • Гость
А если писать руками, но вынося все лэйауты в .ui файлы? Похоже, получается разумный компромисс. Есть какой-нибудь простой мануал на эту тему?

Или просто пишешь appname.cpp, а потом в дизайнере рисуешь морды и подставляешь имена элементов?

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Цитировать
А если писать руками, но вынося все лэйауты в .ui файлы?
Не совсем понял этот вопрос. В ui файлах и так ничего кроме взаимного расположения элементов сделать не получится. А оное либо полностью построенно на layout'ах, либо при масштабировании окна мерзко остаётся неизменным. Сигналы со слотами там можно законнектить только в тривиальных случаях.

Мануал по всему этому делу это в Qt Assistant раздел Qt Designer Manual. Там всё расписано в подробностях лучшее руководство пожалуй сложно представить.

 

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