Size: a a a

2021 January 20

AS

Anatoly Shirokov in Qt
Maxim
Всем привет, может кто то подсказать как в qml привильно оформить окно, чтобы при изменении ширины высота тоже изменялась пропорционально. Такая история работает криво:
ApplicationWindow{
 width: 600
 height: width / 2
}
переодически высота может стать больше ширины, и при отрисовке во время изменения размера прыгает между правильным размером и большим
тебе надо где-то сохранить пропорцию, которую ты хочешь сохранить при ресайзе, нет?
источник

I

ID in Qt
Откуда такая погрешность?
Код:
timer.start(1000);
QObject::connect(&timer, &QTimer::timeout, [&old_time]{
 QTime cur_time = QTime::currentTime();
 int msecs = old_time.msecsTo(cur_time);
 if (msecs > 2000){
    qDebug() << "After " <<msecs<<"\n";
    old_time = cur_time;
 }
});
Вывод:
After  2042 
After  3000
After  2999
After  2001
After  3000
источник

I

ID in Qt
Сглупил. Разобрался
источник

M

Maxim in Qt
Anatoly Shirokov
тебе надо где-то сохранить пропорцию, которую ты хочешь сохранить при ресайзе, нет?
ну а разве биндинг не работает? хочу чтобы когда изменилась ширина, высота была в 2 раза меньше. думал этого достаточно. что я упустил?
источник

VF

Vitaly Farmov in Qt
Maxim
ну а разве биндинг не работает? хочу чтобы когда изменилась ширина, высота была в 2 раза меньше. думал этого достаточно. что я упустил?
Предположим, ты измяняешь только высоту. Что должно произойти?
источник

M

Maxim in Qt
это упрощенный вариант, пускай ничего, но хочу чтобы при изменении ширина высота была равна половине ноаого значения ширины
источник

V

Valerie in Qt
Здравствуйте! Как правильно освобождать память (и где, когда) контекстного меню QMenu*? В деструкторе диалога-парента вызывать delete menu? И почему логирование из деструктора ничего не выводит, по каким причинам это может быть? Деструктор QDialog же не может не вызываться
источник

SE

Suigintou45 E14 in Qt
Valerie
Здравствуйте! Как правильно освобождать память (и где, когда) контекстного меню QMenu*? В деструкторе диалога-парента вызывать delete menu? И почему логирование из деструктора ничего не выводит, по каким причинам это может быть? Деструктор QDialog же не может не вызываться
разместить в куче, диалог как parent передать в конструктор меню; разместить на стеке (для контекстного меню с exec) и оно само удалится; разместить в QScopedPointer внутри класса диалога (тогда деструктор диалога сам почистит)
источник

V

Valerie in Qt
Suigintou45 E14
разместить в куче, диалог как parent передать в конструктор меню; разместить на стеке (для контекстного меню с exec) и оно само удалится; разместить в QScopedPointer внутри класса диалога (тогда деструктор диалога сам почистит)
Спасибо за ответ! В первом случае (то что я и делаю) где и как удалять/удалится меню? При  вызове деструктора парента?
источник

AS

Anatoly Shirokov in Qt
Valerie
Здравствуйте! Как правильно освобождать память (и где, когда) контекстного меню QMenu*? В деструкторе диалога-парента вызывать delete menu? И почему логирование из деструктора ничего не выводит, по каким причинам это может быть? Деструктор QDialog же не может не вызываться
Если вы приведете код не надо будет рассписывать словами
источник

AS

Anatoly Shirokov in Qt
А так в Qt сборку мусора осуществляет парент QObject, если он задан
источник

AS

Anatoly Shirokov in Qt
QObject без парента выделенный в хипе надо удалять самостоятельно через deleteLater()
источник

AS

Anatoly Shirokov in Qt
DeleteLater также рекомендован для того, чтобы не пухла коллекция children в паренте
источник

A

Artur in Qt
Добрый вечер! подскажите, пожалуйста, я один не могу скачать и установить qt с сайта?
источник

V

Valerie in Qt
Anatoly Shirokov
А так в Qt сборку мусора осуществляет парент QObject, если он задан
Спасибо большое! Теперь понятно, что если я передаю this как парента, то этот объект this будет ответственен за сборку мусора в его чилдрен, мне не надо делать delete menu и волноваться, а почему деструктор не пишет в логи 😌
источник

Е

Егор in Qt
Artur
Добрый вечер! подскажите, пожалуйста, я один не могу скачать и установить qt с сайта?
источник

RG

Renat Garaev in Qt
Artur
Добрый вечер! подскажите, пожалуйста, я один не могу скачать и установить qt с сайта?
@anatolijs надо запинить сообщения о недоступности зеркал. Хотя что это за облако, которое не могут восстановить.
источник

AS

Anatoly Shirokov in Qt
Renat Garaev
@anatolijs надо запинить сообщения о недоступности зеркал. Хотя что это за облако, которое не могут восстановить.
Это самое хорошее облако :))) для Qt
источник

B

BAHR in Qt
Valerie
Спасибо большое! Теперь понятно, что если я передаю this как парента, то этот объект this будет ответственен за сборку мусора в его чилдрен, мне не надо делать delete menu и волноваться, а почему деструктор не пишет в логи 😌
Приведите пожалуйста вашу реализацию деструктора.
Чуть чуть странно звучит:
parent будет ответственен за сборку мусора
Тут нет сборки мусора как таковой. При удалении parent он просто удалит всех своих childrens. Но он не будет ничего удалять пока он существует.
для меню можно сделать:
menu->setAttribute(Qt::WA_DeleteOnClose);
тогда оно само удалится, как только исчезнет с экрана.
источник

V

Valerie in Qt
BAHR
Приведите пожалуйста вашу реализацию деструктора.
Чуть чуть странно звучит:
parent будет ответственен за сборку мусора
Тут нет сборки мусора как таковой. При удалении parent он просто удалит всех своих childrens. Но он не будет ничего удалять пока он существует.
для меню можно сделать:
menu->setAttribute(Qt::WA_DeleteOnClose);
тогда оно само удалится, как только исчезнет с экрана.
Деструктор выглядит просто:
If (cntxMenu) delete cntxMenu; if (copyAct) delete copyAct;
источник