• Что будет, если не удалять графические объекты при завершении программы в C++ SDL2?

    @res2001
    Ланской Кирилл, Не надеятся.
    Я ж говорю - исправлять.

    Если это не намеренная ошибка, а в программировании никто не застрахован от ошибок и это регулярно случается со всеми. То ошибка рано или поздно даст о себе знать, если на тестах - хорошо, если у пользователей - плохо, но обычно не страшно. Воспроизводите, локализуете, исправляете. Все.

    Если же вы намеренно не освобождаете ресурсы надеясь на ОСь - ну это в целом ваше персональное дело. Если этот подход пока у вас прокатывает - ну ладно. Вас же никто не может заставить писать delete на каждый new в конце концов. Как напишите программу, так она и работать будет. Но может настать час, когда вам же этот подход как-то вылезет боком. Ну тогда просто в данном конкретном месте освободите и может быть и дальше все буде ОК.

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

    Лично я всегда все освобождаю.
    Написано
  • Что будет, если не удалять графические объекты при завершении программы в C++ SDL2?

    @res2001
    Ланской Кирилл, Исправите.
    Как говорит нынешний мин.обороны "Ошибаться можно, врать нельзя" :-)
    Написано
  • Где можно скачать Qt 5.5.1 под Ubuntu?

    @res2001
    Артем,
    Ну и в целом, если ты можешь собрать окружение снова для сборки под устройство, значит ты знаешь всё необходимое.

    Это верно, конечно. Вот только времени на это уйдет очень много. Так что лучше всего узнать только то, что необходимо для конкретной задачи, а остальное узнавать по мере необходимости/ желания и наличия свободного времени.
    Я хотел попробовать сам у себя на моей новой убунте всё собрать

    С этим есть проблема версионности. Т.к. далеко не все библиотеки обратно совместимы со старыми версиями (тот же Qt) и т.д. и т.п.
    Поэтому в эмбедед достаточно редко обновляют окружение (ОС и основные библиотеки), т.к. это часто требует большой работы по адаптации собственного кода к новым версиям окружения.
    Написано
  • Где можно скачать Qt 5.5.1 под Ubuntu?

    @res2001
    Артем,
    узнал, действительно у нас собственная сборка линукса под наше устройство

    Добро пожаловать в эмбедеры :-)

    Часто бывает, что разработчики железок с линуксом на борту для себя в отладочных целях делают сборку виртуальных машин с окружением, тем же, что будет на борту.
    Так что можно использовать для отладки приложения такую виртуалку, а не железку. Если такой подход у вас практикуется.
    Написано
  • Где можно скачать Qt 5.5.1 под Ubuntu?

    @res2001
    Артем, Ну значит там у вас уже скорее всего есть разработанная система сборки и они просто туда добавят еще и сборку Qt подходящей версии или она уже там есть.

    Соответственно узнайте у людей причастных, какая версия ядра линукс используется в вашей сборке. И если приложение не будет каким-то специфическим, которое нельзя будет запустить на произвольном железе, то можете разрабатывать его на Убунту подходящей версии. Можете поставить ее в виртуалку или нативно, в убунту с помощью стандартного менеджера пакетов установите Qt5 и будете использовать его.

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

    Кросс-компилятор собирается вместе с ядром линукс, точнее даже раньше, т.к. и само ядро и libc и все остальное собираются им же.
    Написано
  • Где можно скачать Qt 5.5.1 под Ubuntu?

    @res2001
    Артем,
    неправильно выразился. Мне билд Qt нужен не под ARM, он нужен под x64, просто чтобы внутри него были либы для сборки проекта под ARM))) уфф, ох уж это формулирование....

    Нет. Билд вам нужен под АРМ, потому что билд не под АРМ не будет работать на АРМ и в нем не будет либ для АРМ.
    В общем, общие принципы расписал выше. Может быть несколько подходов.
    Это ваш личный проект?
    Написано
  • Где можно скачать Qt 5.5.1 под Ubuntu?

    @res2001
    Артем, Для начала вам нужен билд ОС для вашего устройства, т.к. Qt не работает без ОС.
    Что за ОС? Видимо какой-то линукс. Какой?

    Если это самостоятельная сборка линукса, то и Qt вам надо собирать самостоятельно по тем же принципам, что собираете и ОС тем же компилятором с использованием той же libc и т.п.
    Если это какой-то готовый дистрибутив, то ищите Qt в репах этого дистрибутива. Если в репах нет - собирайте тем кросс-компилятором, который предоставляет производитель дистра. Или собирайте Qt нативным компилятором прям на борту.

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

    Но возможно вопрос в другом. Qt библиотека кросс платформенная и если вы будете разрабатывать кросс платформенное приложение, то его в принципе можно писать и отлаживать почти в произвольной системе. Для простоты вам можно выбрать какую-то версию убунты на примерно той же версии ядра, что и ваша целевая платформа (не обязательно точное совпадение), там почти наверняка будет и Qt подходящей версии. Спокойно писать и отлаживать приложение в убунте, а затем просто пересобрать ваше готовое приложение для целевой платформы.
    Написано
  • Почему редактор ругается на вынесенную функцию?

    @res2001
    Вообще обычно cpp файлы не используют в #include.
    Бывают исключения, но крайне редкие и там разрабы наверное знают что делают, впрочем это не значит, что это правильный вариант. Но, возможно, самый простой в их случае.

    В файлах заголовоков обычно пишут как раз форвардные объявления экспортируемых функций (помимо типов, макросов и т.п.).
    Поэтому правильный вариант был бы: создать файл func.h, в нем написать форвардное объявление функции и затем включить его в main.cpp в include. При этом при компиляции надо будет указывать оба файла в опциях компилятору: g++ main.cpp func.cpp

    Выше описан стандартный правильный подход для работы в проекте, где исходников больше чем 1 файл, практически всегда надо использовать такой подход.

    Еще один вариант сделать чтоб программа собралась, но при этом ничего не изменять в исходниках вообще - не указывать func.cpp при сборке компилятору: g++ main.cpp
    Это сработает в вашем случае, т.к. #include "func.cpp" уже включает содержимое func.cpp в main.cpp, компилятору этого достаточно для сборки.

    Ошибка у вас была явна не то что вы пишете:
    выдает ошибку о многобайтовом использовании символа.

    Она видимо звучала как многократное (или множественное) определение символа.
    В следующий раз приводите здесь оригинальный текст ошибки - просто скопируйте то что вам выдал компилятор - всем будет проще.
    Написано
  • Где можно скачать Qt 5.5.1 под Ubuntu?

    @res2001
    Артем, Какая у вас целевая платформа? Ubuntu для arm? Какая версия?
    Вот та же ссылка на пакет для арма: https://launchpad.net/ubuntu/xenial/arm64/qtbase5-...

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

    Qt вполне может быть не обратно совместим. Помню сам столкнулся с этим, когда мажорная версия у него поменялась с 4 на 5. Пришлось кое-что по мелочи править в своем проекте.
    Написано
  • Почему трясётся виджет во время перемещения мышью?

    @res2001
    Kirgus, По моему (и с точки зрения винды) это все окна с разными свойствами, так же как ваш Rectangle и любой виджет. Окно не обязано быть с заголовком и системным меню. Все элементы управления на форме - то же окна и т.п.
    Написано
  • Почему трясётся виджет во время перемещения мышью?

    @res2001
    Kirgus,
    а родительского окна у меня нет

    А кто такой canvas? И как этот canvas связан с MainWindow?
    Figure *figure1 = new Rectangle(100, 20, 200, 100, canvas);

    У вас тут уже вырисовывается иерархия из окон :)
    Написано
  • Почему трясётся виджет во время перемещения мышью?

    @res2001
    Kirgus, Это легко проверяется - запустите под отладчиком, точку останова на Figure::mouseMoveEvent и посмотрите что лежит в pos и figurePos и соответствует ли (примерно) оно тому, что вы предполагаете там должно быть.
    Написано
  • Почему трясётся виджет во время перемещения мышью?

    @res2001
    Kirgus, Нет, я хочу сказать, что: 1) координаты окна могут измерятся вообще не в пикселях 2) координаты окна измеряются относительно родительского окна 3) координаты мыши, видимо, измеряются относительно всего экрана в пикселях.
    Но это предположение. Впрочем вполне вероятное.
    Я уже давно не писал GUI, но когда-то было дело, и мне приходилось задавать координатную шкалу для окон. Правда это был не Qt. Но по моему, даже на голом WinAPI это возможно.
    Написано
  • Можно ли получить динамический ip-адрес, если включена услуга статический ip-адрес?

    @res2001
    Откажетесь от услуги, оператор начнет выдавать динамический адрес. Самостоятельно, без участия оператора, вы этого сделать не сможете.
    Написано
  • Почему трясётся виджет во время перемещения мышью?

    @res2001
    Предположу, что координаты мыши и окна в разных единицах измеряются. Соответственно deltу надо переводить в единицы окна перед сложением. Ну или координаты мыши сразу переводить в координаты окна и с deltой уже ничего не надо будет делать.
    https://doc.qt.io/qt-6/qwidget.html#pos-prop
    Написано
  • Проблемы с подключением заголовочных файлов на C++, как исправить?

    @res2001
    Adamos, Да, имя заголовка не удачное. То же думал написать об этом, но решил - пусть чел насладится процессом :)
    Написано
  • Как в Linux найти файлы одинакового размера?

    @res2001
    Теоретически:
    1. Делаете список всех необходимых файлов с полными путями, содержащий путь к файлу и размер
    2. Сортируете список по размеру
    3. Проходитесь по списку ищите файлы одинакового размера - они все будут рядом друг с другом. По каждому отдельному размеру файлов:
    3.1. По файлам с одинаковым размером считаете какую-нибудь контрольную сумму на выбор (MD5, CRC32, SHAXXX без разницы в общем), путь к файлу и контрольную сумму складываете в отдельный временный файл
    3.2. Полученный файл с контрольными суммами сортируете по контрольной сумме
    3.3. Проходитесь по файлу с контрольными суммами и удаляете файлы, где контрольная сумма повторяется с предыдущей
    4. Конец

    В принципе все это можно сделать не сильно сложным bash скриптом.
    Написано
  • Какая структура самая быстрая для поиска по числовым ключам без хэширования?

    @res2001
    Eugene Usachev, Вам бы посмотреть профайлером что у вас съедает производительность.
    Судя по всему хэш таблица вполне подходящая структура. Возможно вектор указателей - не совсем подходит.
    Написано
  • Почему я не могу сохранить изменение в файле, хотя у меня есть все права на каталог где он находится?

    @res2001
    Права на каталог может быть и есть. Есть ли права на файл? Наследование прав можно отключить.
    Возможно файл все еще открыт другим процессом.
    Написано
  • Можно ли обойти блокировку OpenVPN через другой VPN?

    @res2001
    Это не "ВПН поверх ВПН", это просто цепочка из ВПН подключений.
    Но роли это не играет, возможен и тот и другой вариант.
    Написано