• Как рисовать на QPixmap?

    @Mercury13
    Программист на «си с крестами» и не только
    Ваши ошибки.
    1. QPixmap — сам по себе указатель совместного владения; если надо его ненадолго создать — делайте на стеке, никаких new!
    1.1. Аналогично и QPainter, только он указатель единоличного владения. Кстати, это однажды сыграло с одной моей программой злую шутку, когда она выжрала всю память.
    2. Зачем нужна генерация Pixmap’а в процедуре перерисовки формы? Если ваш потомок сам корректно рисует картинку — генерируйте её по событию «что-то изменилось».

    Далее, если картинок может быть конечное, но достаточно большое число (например, тысячи), можно наладить кэш, где хранятся подготовленными, например, последние двадцать. Если картинок немного (до сотни), лучше при загрузке программы подготовить их все.
    Ответ написан
    Комментировать
  • Как рисовать на QPixmap?

    Nipheris
    @Nipheris Куратор тега C++
    Господи, что ж вы делаете-то.
    pix= *pixmap;

    Это что вообще? Зачем?
    Решил создать третий QPixmap и в paintEvent перерисовывать изображение

    Так вы хотите один раз QPixmap проставить лейблу или перерисовывать каждый раз самостоятельно? Если перерисовывать, то зачем же QPixmap создавать на куче и еще и переприсваивать его в поле?
    Пытался переопределять resizeEvent, вставляя в него repaint() и update(), но ситуация та же.

    Ресайз-то тут причём? Пытаетесь уже любой ценой задачу решить?)
    Ответ написан
    Комментировать
  • QT: Как серверу понять, какой именно сокет отсоединился?

    Rou1997
    @Rou1997
    Удаляйте тот, на который указывает значение, возвращаемое sender(), вы же не копировали объект когда добавляли указатель в контейнер, а значит, это и есть тот же самый объект, не знаю насчет QMap, но обычно списки поддерживают удаление объекта без ключа или индекса, в специальный метод передаете указатель и список удаляет этот элемент.
    Если с этим проблемы - то да, реализуйте собственную идентификацию.
    Ответ написан
    1 комментарий
  • Нужен ли Win32\ WinRT?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Под WinRT (Metro/UWP) пока рановато писать, хотя бы потому, что мала популярность виндов 8 и выше, а на ниже его нет вообще.

    Нужно писать классические десктопные приложения, которые идут хотя бы на WinXP и выше.
    WinRT не является для них основой, он прилеплен где-то сбоку как другая платформа.
    А вот Win32 - является, все фреймворки (.NET, VCL, Qt...) основаны на WinAPI.

    Но непосредственно на WinAPI никто не пишет приложений, это слишком тяжело и долго, основную часть кода пишут на фреймворке (под винду обычно лучше всего C# и .NET), а вот те вещи, которые на фреймворке не сделать, - делают на WinAPI.
    Поэтому полезно изучать WinAPI, но реально нужнее знать именно те его функции, для которых нет оберток в фреймворке. И изучать их по мере необходимости: писал программу - понадобилась - погуглил - изучил - вставил DllImport - применил - работает.
    Хотя и тот же GUI или работу с файлами или HTTP тоже полезно изучать параллельно на .NET и на WinAPI, для знания основ, ваш вопрос "кто на ком основан" это тоже поможет прояснить.
    Ответ написан
    1 комментарий