Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: fabricant от Март 02, 2011, 01:28



Название: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: fabricant от Март 02, 2011, 01:28
Пытаюсь добавить QPixmap к QGraphicsPixmapItem
Код:
QPixmap *ghst;
    ghst.load("C:/Users/Andrey/Desktop/ghost.png");
    ghost->setPixmap(ghst);
сразу после компиляции програма вылетает


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: Пантер от Март 02, 2011, 08:28
Оно вообще-то и компилироваться не должно.
Код
C++ (Qt)
QPixmap ghst;
   ghst.load("C:/Users/Andrey/Desktop/ghost.png");
   ghost->setPixmap(ghst);
 


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: alexman от Март 02, 2011, 08:51
сразу после компиляции програма вылетает
В смысле? Среда разработки падает?


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: fabricant от Март 02, 2011, 09:28
сразу после компиляции програма вылетает
В смысле? Среда разработки падает?
нет среда остаеться работать,програма которую компилирую запускаеться и сразу вылетает


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: fabricant от Март 02, 2011, 09:29
Оно вообще-то и компилироваться не должно.
Код
C++ (Qt)
QPixmap ghst;
   ghst.load("C:/Users/Andrey/Desktop/ghost.png");
   ghost.setPixmap(ghst);
 
А по подробнее можно как правильно добавить?.


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


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: alexman от Март 02, 2011, 09:33
fabricant, коду больше выложи! Тут нет телепатов ;) Что такое ghost?


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: GreatSnake от Март 02, 2011, 09:40
Судя по
Цитировать
ghost.setPixmap(ghst);
ghost это QGraphicsPixmapItem аллокированный на стеке, поэтому при выходе из области видимости ghost уничтожается и скорее всего дальше используется уже уничтоженный объект.


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: fabricant от Март 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"));
посреди выполнения програмы мне нужно заменить эту картинку на другую. Пытался заменить таким же способом в итоге появились обе картинки на экране


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: GreatSnake от Март 02, 2011, 10:08
Почему выше вы приводите примеры, где вы обращаетесь к методам класса через ".", хотя на самом деле через "->"?
Если для вас это не имеет значения, то садитесь за учебники по С/С++.

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

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


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: alexman от Март 02, 2011, 13:03
Судя по
Цитировать
ghost.setPixmap(ghst);
ghost это QGraphicsPixmapItem аллокированный на стеке, поэтому при выходе из области видимости ghost уничтожается и скорее всего дальше используется уже уничтоженный объект.
Извиняюсь...телепаты все таки есть ;)


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: GreatSnake от Март 02, 2011, 13:09
Цитировать
Извиняюсь...телепаты все таки есть
Народ уж больно ленивый пошел. Вот и приходится телепатировать ;)


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: Пантер от Март 02, 2011, 13:10
GreatSnake телепатия +1
 ;D


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: fabricant от Март 03, 2011, 11:55
Вторым вызовом вы просто создали на сцене второй элемент. Для изменения пиксмапа у уже существующего элемента используйте QGraphicsPixmapItem::setPixmap().
спасибо помогло. А по поводу точки вместо "->" хз как она там оказалась


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: alexman от Март 03, 2011, 12:29
А по поводу точки вместо "->" хз как она там оказалась
Прикол! А кто же знать должен? ;D


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: fabricant от Март 03, 2011, 22:48
у меня опять почти такая же проблема
Код:
QGraphicsTextItem *text;
    text=addText("hello world",QFont("Times New Roman",26,1));
как потом этот текст изменить?


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: BRE от Март 03, 2011, 22:52
как потом этот текст изменить?
А какие есть методы в классе QGraphicsTextItem, которые принимают в качестве параметра const QString &text?


Название: Re: не могу присоеденить QPixmap к QGraphicsPixmapItem
Отправлено: fabricant от Март 03, 2011, 22:59
все уже нашел