Russian Qt Forum
Ноябрь 24, 2024, 10:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: не могу присоеденить QPixmap к QGraphicsPixmapItem  (Прочитано 9528 раз)
fabricant
Гость
« : Март 02, 2011, 01:28 »

Пытаюсь добавить QPixmap к QGraphicsPixmapItem
Код:
QPixmap *ghst;
    ghst.load("C:/Users/Andrey/Desktop/ghost.png");
    ghost->setPixmap(ghst);
сразу после компиляции програма вылетает
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Март 02, 2011, 08:28 »

Оно вообще-то и компилироваться не должно.
Код
C++ (Qt)
QPixmap ghst;
   ghst.load("C:/Users/Andrey/Desktop/ghost.png");
   ghost->setPixmap(ghst);
 
« Последнее редактирование: Март 02, 2011, 10:13 от Пантер » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
alexman
Гость
« Ответ #2 : Март 02, 2011, 08:51 »

сразу после компиляции програма вылетает
В смысле? Среда разработки падает?
Записан
fabricant
Гость
« Ответ #3 : Март 02, 2011, 09:28 »

сразу после компиляции програма вылетает
В смысле? Среда разработки падает?
нет среда остаеться работать,програма которую компилирую запускаеться и сразу вылетает
Записан
fabricant
Гость
« Ответ #4 : Март 02, 2011, 09:29 »

Оно вообще-то и компилироваться не должно.
Код
C++ (Qt)
QPixmap ghst;
   ghst.load("C:/Users/Andrey/Desktop/ghost.png");
   ghost.setPixmap(ghst);
 
А по подробнее можно как правильно добавить?.
« Последнее редактирование: Март 02, 2011, 09:30 от fabricant » Записан
alexman
Гость
« Ответ #5 : Март 02, 2011, 09:32 »

Оно вообще-то и компилироваться не должно.
Код
C++ (Qt)
QPixmap ghst;
   ghst.load("C:/Users/Andrey/Desktop/ghost.png");
   ghost.setPixmap(ghst);
 
ghost - тут вообще не указан.
Записан
alexman
Гость
« Ответ #6 : Март 02, 2011, 09:33 »

fabricant, коду больше выложи! Тут нет телепатов Подмигивающий Что такое ghost?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Март 02, 2011, 09:40 »

Судя по
Цитировать
ghost.setPixmap(ghst);
ghost это QGraphicsPixmapItem аллокированный на стеке, поэтому при выходе из области видимости ghost уничтожается и скорее всего дальше используется уже уничтоженный объект.
Записан

Qt 5.11/4.8.7 (X11/Win)
fabricant
Гость
« Ответ #8 : Март 02, 2011, 10:00 »

Судя по
Цитировать
ghost.setPixmap(ghst);
ghost это QGraphicsPixmapItem аллокированный на стеке, поэтому при выходе из области видимости ghost уничтожается и скорее всего дальше используется уже уничтоженный объект.
ghost я описа не внутри функции а при создании класса тоесть примерно так
Код:
class eh:public QGraphicsScene
{
...
QGraphicsPixmapItem *ghost;
...}
поэтому он должен оставаться в области видимости.
Я не правильно поставил вопрос. Мне удаеться добавить  вот таким способом
Код:
ghost=addPixmap(QPixmap("C:/Users/Andrey/Desktop/ghost.png"));
посреди выполнения програмы мне нужно заменить эту картинку на другую. Пытался заменить таким же способом в итоге появились обе картинки на экране
« Последнее редактирование: Март 02, 2011, 10:02 от fabricant » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Март 02, 2011, 10:08 »

Почему выше вы приводите примеры, где вы обращаетесь к методам класса через ".", хотя на самом деле через "->"?
Если для вас это не имеет значения, то садитесь за учебники по С/С++.

(!) Если хотите получить помощь, потрудитесь правильно описать проблему с компилируемыми участками кода.

Цитировать
посреди выполнения програмы мне нужно заменить эту картинку на другую. Пытался заменить таким же способом в итоге появились обе картинки на экране
Цитата: Ассистент
QGraphicsScene::addPixmap() creates and adds a pixmap item to the scene, and returns the item pointer.
Вторым вызовом вы просто создали на сцене второй элемент. Для изменения пиксмапа у уже существующего элемента используйте QGraphicsPixmapItem::setPixmap().
« Последнее редактирование: Март 02, 2011, 10:15 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
alexman
Гость
« Ответ #10 : Март 02, 2011, 13:03 »

Судя по
Цитировать
ghost.setPixmap(ghst);
ghost это QGraphicsPixmapItem аллокированный на стеке, поэтому при выходе из области видимости ghost уничтожается и скорее всего дальше используется уже уничтоженный объект.
Извиняюсь...телепаты все таки есть Подмигивающий
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Март 02, 2011, 13:09 »

Цитировать
Извиняюсь...телепаты все таки есть
Народ уж больно ленивый пошел. Вот и приходится телепатировать Подмигивающий
Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Март 02, 2011, 13:10 »

GreatSnake телепатия +1
 Смеющийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
fabricant
Гость
« Ответ #13 : Март 03, 2011, 11:55 »

Вторым вызовом вы просто создали на сцене второй элемент. Для изменения пиксмапа у уже существующего элемента используйте QGraphicsPixmapItem::setPixmap().
спасибо помогло. А по поводу точки вместо "->" хз как она там оказалась
Записан
alexman
Гость
« Ответ #14 : Март 03, 2011, 12:29 »

А по поводу точки вместо "->" хз как она там оказалась
Прикол! А кто же знать должен? Смеющийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.097 секунд. Запросов: 23.