На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Пересылка данных из одного Qpixmap в другой.
    Уважаемые форумчане, помогите разобраться в вопросе.
    Есть два Qpixmap, созданные в Qt5:

    QPixmap * PixMap1, * PixMap2;
    PixMap1 = new QPixmap(1000, 500);
    PixMap2 = new QPixmap(1000, 500);


    В первом хранится сравнительно редко меняющаяся информация.
    Какими функциями данные из PixMap1 загрузить в PixMap2, а после графической модификации PixMap2, которая бывает чаще, вывести PixMap2 без мерцания на экран?
      Цитата Embedder @
      Есть два Qpixmap, созданные в Qt5:

      У этих объектов должны быть методы.
      Значит, выбираем www.ya.ru.
      Ищем "Qpixmap методы".
      Сразу получаем ссылку: ссылка
      Изучаем материалы и почти сразу обнаруживаем интересные варианты:
      ExpandedWrap disabled
        QPixmap &   operator=(QPixmap &&other)
        QPixmap &   operator=(const QPixmap &pixmap)
        QPixmap     copy(int x, int y, int width, int height) const

      Дальше надо пробовать.
        Спасибо за хорошую подсказку, буду пробовать!

        Это для электронной карты, вид которой меняется сравнительно не часто, и наносимых через каждые 3 секунды на неё отметок от радара. В Qt3 всё давно работает, теперь надо чтобы и в Qt5.
          Нашел еще один вариант, на нем, видимо, и остановлюсь. Для пересылки из pixmap1 в pixmap2 использовал одну из функций drawPixmap:

          QPainter painter(&pixmap2);
          painter.drawPixmap(pixmap2.rect(),pixmap1,pixmap1.rect());
          painter.end();

          в приложении рабочие тестовые файлы.
          Прикреплённый файлПрикреплённый файлtest.zip (969 байт, скачиваний: 221)
            Цитата Embedder @
            Нашел еще один вариант, на нем, видимо, и остановлюсь.

            Странно, наличие функции
            ExpandedWrap disabled
              QPixmap &   operator=(const QPixmap &pixmap)

            должно давать возможность делать так:
            ExpandedWrap disabled
              //...
              QPixmap q1;
              //...
              QPixmap q2;
              //...
                       q2 = g1;
              Спасибо за ответ!
              Да, я сразу заметил, что можно и так: q2 = g1;
              Это работало, но решил поискать еще что-то. Смутило то, что очень все просто получается (перегруженным присваиванием) при статическом определении QPixmap q1. Не понятным осталось, как присваивать при динамическом определении картинок QPixmap *q1 = new QPixmap();


              Еще, если можно, вопрос. Записи прототипов функций типа
              QPixmap & operator=(const QPixmap &pixmap)
              QPixmap &QPixmap::operator=(QPixmap &&other)
              и подобные, мне пока трудно расшифровывать. Где можно почитать о правилах расшифровки, так как в https://doc.qt.io/qt-5/qpixmap.html много такого (иногда выглядят как ребусы), а простых (наглядных) примеров почти нет.
                Цитата Embedder @
                Не понятным осталось, как присваивать при динамическом определении картинок QPixmap *q1 = new QPixmap();

                Поскольку присваиваются объекты, а не указатели тогда:
                ExpandedWrap disabled
                  *q1 = *q2;


                Добавлено
                Цитата Embedder @
                Записи прототипов функций типа
                QPixmap & operator=(const QPixmap &pixmap)
                QPixmap &QPixmap::operator=(QPixmap &&other)
                и подобные, мне пока трудно расшифровывать.
                Где можно почитать ...

                Это надо читать книги по c++ в разделе
                "перегрузка операций"
                Если совсем кратко, то когда компилятор обнаружит
                в тексте выражение присваивания (или другой операции)
                над объектом, от начнёт искать подходящий прототип функции для этого.
                И буквально произведёт замену:
                ExpandedWrap disabled
                  q2 = q1;

                на
                ExpandedWrap disabled
                  q2.operator=(q1);
                Сообщение отредактировано: ЫукпШ -
                  Цитата ЫукпШ @

                  Спасибо за подсказки, они мне помогли!
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0294 ]   [ 18 queries used ]   [ Generated: 25.04.24, 04:13 GMT ]