Russian Qt Forum
Ноябрь 26, 2024, 16:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: [РЕШ.] QMessageBox. Крэш при установке пользовательского размера окна (Qt 5.2.1)  (Прочитано 16621 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Февраль 22, 2014, 17:27 »

По мне так вообще системный title - то так, когда нужно что-то слепить по-быстрому. FramelessWindowHint - вот капитальный подход к делу. Ну ладно, а вот такой вопросик:

На скриншотах ясно видно что месяга размещена, мягко говоря, "неоптимально" - текста с гулькин "нос", а окно как большой лапоть. Как бы сделать так чтобы автоматом/пулеметом сайзилось под текст месяги?

Спасибо 
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #16 : Февраль 22, 2014, 19:17 »

обычно adjustSize() помогает, хотя QMessageBox сам вроде неплохо размер подбирает. или вопрос о WinAPI диалогах?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Февраль 22, 2014, 19:24 »

обычно adjustSize() помогает, хотя QMessageBox сам вроде неплохо размер подбирает. или вопрос о WinAPI диалогах?
Про WinAPI ничего не скажу, но на OSX размер подбирается "из рук вон плохо" - еще хуже чем в показанных скриншртах
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #18 : Февраль 22, 2014, 19:32 »

нативный NSAlert же тоже много места оставляет, разве нет?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Fuzzy Barsik
Гость
« Ответ #19 : Февраль 22, 2014, 22:24 »

По мне так вообще системный title - то так, когда нужно что-то слепить по-быстрому. FramelessWindowHint - вот капитальный подход к делу.
На вкус и цвет фломастеры разные. По мне так как раз системный фрейм и делает кросс-платформенное приложение родным для каждой ОС.
На скриншотах ясно видно что месяга размещена, мягко говоря, "неоптимально" - текста с гулькин "нос", а окно как большой лапоть. Как бы сделать так чтобы автоматом/пулеметом сайзилось под текст месяги?
Оно как раз по умолчанию и "оптимизируется" под размер текста, как уважаемый kambala и говорит:

И именно эта неуправляемая "оптимизация" мне и не нужна.

Зачем разработчики MPC Home Cinema такой размер окна сделали - не имею ни малейшего представления.

оказывается надо было просто загуглить
Гранаты у Вас не той системы - я, почему-то, на Qt Project только про setWindowFlags() находил...

Пример со stackoverflow даёт тот же результат, что и setWindowFlags(). По крайней мере, у меня и у автора вопроса на stackoverflow...

Класс с Qt Project прикрутить пока не могу - Qt почему-то отказывается видеть #include <QtGui/QDialog> (как и просто <QDialog>) в mydialog.h и, соответственно, компилировать проект. Буду подумать...
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #20 : Февраль 22, 2014, 22:30 »

может mydialog не добавлен в HEADERS и/или SOURCES в .pro?

в качестве жутко грязного хака для растяжения окна можно банально пробелов налепить в конце строки Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Fuzzy Barsik
Гость
« Ответ #21 : Февраль 22, 2014, 22:44 »

может mydialog не добавлен в HEADERS и/или SOURCES в .pro?
В .pro его автоматом добавляет Qt Creator при создании нового файла для класса. В fuzzygui.h #include "mydialog.h" добавлен ручками. Компилятор не видит стандартный #include <QtGui/QDialog> в mydialog.h...

в качестве жутко грязного хака для растяжения окна можно банально пробелов налепить в конце строки Улыбающийся
Фу-у-у...
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #22 : Февраль 22, 2014, 23:15 »

не может он в одном файле видеть, а в другом — нет. попробуй может эту строчку руками набрать, мало ли что там при копировании случилось…
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Fuzzy Barsik
Гость
« Ответ #23 : Февраль 22, 2014, 23:29 »

Не-е-е, саму строчку он видит, читает правильно. Говорит: "Нету QDialog в твоих библиотеках!" Ручками перебивал (это, кстати, первое, что всегда в голову приходит). Иногда в других примерах помогало удаление QtGui/ перед названием класса, но сейчас пока никак... У мну просто сама сборка Qt криво вставала - может из-за этого (переменные среды какие не видит или ещё что...) Хотя, может, как обычно, проблема одна, и она сидит перед моим монитором...
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #24 : Февраль 23, 2014, 00:20 »

выложи проект полностью архивом, узнаем в чем проблема
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Fuzzy Barsik
Гость
« Ответ #25 : Февраль 23, 2014, 00:56 »

FuzzyGUI.7z
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #26 : Февраль 23, 2014, 01:15 »

после удаления QtGui/ и напихивания reinterpret_cast для конвертации между HWND и WId все взлетело в 5.2.1, а в 4.8.5 вообще никакие правки не потребовались. еще пришлось Q_WS_WIN заменить на Q_OS_WIN, т.к. в Qt 5 *_WS_* дефайны убрали.

вот только картина вышла не очень (см. скрин), но на эскейп реагирует и высвечивает что я угадал Улыбающийся а не, все правильно.

P.S. файл .user выкладывать не нужно — там хранятся настройки конкретной машины.
« Последнее редактирование: Февраль 23, 2014, 01:17 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Fuzzy Barsik
Гость
« Ответ #27 : Февраль 23, 2014, 01:27 »

после удаления QtGui/ и напихивания reinterpret_cast для конвертации между HWND и WId все взлетело в 5.2.1, а в 4.8.5 вообще никакие правки не потребовались. еще пришлось Q_WS_WIN заменить на Q_OS_WIN, т.к. в Qt 5 *_WS_* дефайны убрали.
Пасиба!
Завтра с утра попробую у себя.

вот только картина вышла не очень (см. скрин), но на эскейп реагирует и высвечивает что я угадал Улыбающийся
Нормальный картинко! Осталось только WindowCloseButtonHint добавить и посмотреть, не вылезет ли эта зараза системное меню снова.

файл .user выкладывать не нужно — там хранятся настройки конкретной машины.
Ага, я знаю. Я просто спасть уже собрался - не соображаю ничего, все файлы выделил, а Ctrl+Click на .user нажать уже не смог...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #28 : Февраль 23, 2014, 04:55 »

нативный NSAlert же тоже много места оставляет, разве нет?
Оно как раз по умолчанию и "оптимизируется" под размер текста, как уважаемый kambala и говорит:
И именно эта неуправляемая "оптимизация" мне и не нужна.
Так есть возможность этим порулить или как? "Много или мало" - неважно в какую сторону, главное все равно "плохо"  Улыбающийся
Записан
Fuzzy Barsik
Гость
« Ответ #29 : Февраль 23, 2014, 10:12 »

Так есть возможность этим порулить или как?
Так, вот этот костыль
Код
PHP
QSpacerItem* horizontalSpacer = new QSpacerItem(300, 100, QSizePolicy::Fixed, QSizePolicy::Fixed);
dynamic_cast<QGridLayout*>(updateOptions.layout())->addItem(horizontalSpacer, 0, 0, 0, 0);
именно для того и предназначен. У меня другой был вопрос совершенно.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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