Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.190.101] |
|
Сообщ.
#1
,
|
|
|
Уважаемые форумчане, помогите разобраться в вопросе.
Есть два Qpixmap, созданные в Qt5: QPixmap * PixMap1, * PixMap2; PixMap1 = new QPixmap(1000, 500); PixMap2 = new QPixmap(1000, 500); В первом хранится сравнительно редко меняющаяся информация. Какими функциями данные из PixMap1 загрузить в PixMap2, а после графической модификации PixMap2, которая бывает чаще, вывести PixMap2 без мерцания на экран? |
Сообщ.
#2
,
|
|
|
Цитата Embedder @ Есть два Qpixmap, созданные в Qt5: У этих объектов должны быть методы. Значит, выбираем www.ya.ru. Ищем "Qpixmap методы". Сразу получаем ссылку: ссылка Изучаем материалы и почти сразу обнаруживаем интересные варианты: QPixmap & operator=(QPixmap &&other) QPixmap & operator=(const QPixmap &pixmap) QPixmap copy(int x, int y, int width, int height) const Дальше надо пробовать. |
Сообщ.
#3
,
|
|
|
Спасибо за хорошую подсказку, буду пробовать!
Это для электронной карты, вид которой меняется сравнительно не часто, и наносимых через каждые 3 секунды на неё отметок от радара. В Qt3 всё давно работает, теперь надо чтобы и в Qt5. |
Сообщ.
#4
,
|
|
|
Нашел еще один вариант, на нем, видимо, и остановлюсь. Для пересылки из pixmap1 в pixmap2 использовал одну из функций drawPixmap:
QPainter painter(&pixmap2); painter.drawPixmap(pixmap2.rect(),pixmap1,pixmap1.rect()); painter.end(); в приложении рабочие тестовые файлы. Прикреплённый файлtest.zip (969 байт, скачиваний: 221) |
Сообщ.
#5
,
|
|
|
Цитата Embedder @ Нашел еще один вариант, на нем, видимо, и остановлюсь. Странно, наличие функции QPixmap & operator=(const QPixmap &pixmap) должно давать возможность делать так: //... QPixmap q1; //... QPixmap q2; //... q2 = g1; |
Сообщ.
#6
,
|
|
|
Спасибо за ответ!
Да, я сразу заметил, что можно и так: 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 много такого (иногда выглядят как ребусы), а простых (наглядных) примеров почти нет. |
Сообщ.
#7
,
|
|
|
Цитата Embedder @ Не понятным осталось, как присваивать при динамическом определении картинок QPixmap *q1 = new QPixmap(); Поскольку присваиваются объекты, а не указатели тогда: *q1 = *q2; Добавлено Цитата Embedder @ Записи прототипов функций типа QPixmap & operator=(const QPixmap &pixmap) QPixmap &QPixmap::operator=(QPixmap &&other) и подобные, мне пока трудно расшифровывать. Где можно почитать ... Это надо читать книги по c++ в разделе "перегрузка операций" Если совсем кратко, то когда компилятор обнаружит в тексте выражение присваивания (или другой операции) над объектом, от начнёт искать подходящий прототип функции для этого. И буквально произведёт замену: q2 = q1; на q2.operator=(q1); |
Сообщ.
#8
,
|
|
|
Цитата ЫукпШ @ Спасибо за подсказки, они мне помогли! |