LINUX.ORG.RU

Фиксированный размер диалога

 


0

1

Вопрос к знатокам Qt.

Нужно сделать так, чтобы кастомный диалог растягивался по содержимому и в то же время, не мог быть растянуть пользователем. Этакий кот Шредингера. :)

SetFixedSize() не подходит, потому что диалог перестает тянуться по содержимому. На ум приходит самому вычислять и устанавливать размер диалога, но может быть можно поручить это Qt? Как сделать это правильнее?

Заранее спасибо за ответы. :)

★★★★★

Возможно adjustSize() поможет?

EXL ★★★★★
()
Ответ на: комментарий от wota

Во, класс!!! Работает!

А можно еще чтобы указатель мыши не показывал, что окно можно ресайзить?

hibou ★★★★★
() автор топика

не мог быть растянуть пользователем

Таких разработчиков я бы карал. Жестоко.

anonymous
()
Ответ на: комментарий от anonymous

Присоединяюсь к мнению анонимуса.

Бывают, конечно, разные дизайнерские интерфейсы и мне даже приходилось их самому запиливать, но чаще всего это обернется фейлом.

Обязательно протестируйте подобное поведения на нестандартном размере системных шрифтов. Мне в QtCreator постоянно приходится увеличивать размер диалогов, т.к. изначально все содержимое «сжато» (ex: высота QLineEdit слишком маленькая и т.п.).

trex6 ★★★★★
()
Ответ на: комментарий от anonymous

Таких разработчиков я бы карал. Жестоко.

Ты узнал что у него за диалог? Может там три слова «Ошибка записи файла», на кой хрен такой диалог делать растягиваемым пользователем?

Bacteriophage
()
Ответ на: комментарий от Bacteriophage

И да, во-первых QMessageBox для незнакомых с матчастью.

А во-вторых и самых главных - сама эта логика ущербна в своём основании. Начинается всё с «на кой хрен такой диалог делать растягиваемым пользователем?», а потом логически приходит к «на кой хрен делать в программе настройки?», «на кой позволять пользователю устанавливать программы?» и «на кой хрен давать пользователю менять операционную систему?».

А начинается всё с того самого диалога, да.

Еще тупая железка, запрограммированая интерфейсными наци, не указывала мне что делать, блджад.

anonymous
()
Ответ на: комментарий от anonymous

Не помню почему мы это не используем. Тут свой диалог запилен, с логотипом компании. И, возможно, еще потому, что продукт специфический, под него идут специальные железки, где стоят разные оси (линукс и винда) и надо, чтобы диалог был одинаков, порядок кнопок, поведение, чтобы юзеру не надо было переучиваться садясь за другую машину.

hibou ★★★★★
() автор топика
Ответ на: комментарий от anonymous

запрограммированая интерфейсными наци

Наглое 4.2
Вики: Несмотря на то, что использование окна сообщения является часто применяемым шаблоном проектирования, оно критикуется экспертами по юзабилити как неэффективное решение для поставленной задачи (защита от ошибочных действий пользователя), вдобавок, при наличии лучших альтернатив.

Bacteriophage
()
Ответ на: комментарий от E

Спасибо!

Я еще нашел, что можно флаг окна выставить в Qt::MSWindowsFixedSizeDialogHint. Но на линуксе еще не проверял.

hibou ★★★★★
() автор топика
Ответ на: комментарий от Bacteriophage

А ты сноб.

Не, я тролль. :D И я пьян. :P

anonymous
()
setFixedSize(width, height);
m0rph ★★★★★
()

Убивать. Например, Origin в Wine крашится на тайловых оконных менеджерах в тайловом режиме. Потому что диалогу логина в кутях захаркдодали неизменяемый размер. ВМ его тянет - ориджин крашится. Час убил на то, чтоб разобраться в чем дело. Ненависть.

NeverLoved ★★★★★
()
Ответ на: комментарий от RiseOfDeath

Ему подсказать надо. Для этого и служат флаги окна. Но больно уж у этого флага название виндовое :)

hibou ★★★★★
() автор топика
Ответ на: комментарий от NeverLoved

На наших железках не используется ни вайн, ни тайловые менеджеры. Да и вообще на проблемы негров смахивает )))

hibou ★★★★★
() автор топика
Ответ на: комментарий от NeverLoved

Да, возможно, это еще одна причина, по которой SetFixedSize() не лучший выход. Лучше подсказать менеджеру, что это FixedSize окно. Менеджер окон сам решит как его рисовать. Но тут надо поглядеть как реализована эта SetFixedSize() для окна. И, наверное, менеджер окон должен был правильно интерпретировать такое задание.

hibou ★★★★★
() автор топика
Последнее исправление: hibou (всего исправлений: 2)
Ответ на: комментарий от hibou

по-хорошему setMinimumSize должен применятся к отдельным виджетам внутри диалога и тогда должно работать

wota ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.