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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPixmap как получить ?  (Прочитано 3918 раз)
BuRn
Гость
« : Декабрь 11, 2011, 03:30 »

Опять у меня вопросы с доступом к объекту , вот кусок функции:
Код:
  LoadItems(&name_items,name);
        Pixmap *pix[name_items.count()];
        for(int i=0;i<name_items.count();i++)
        {
            pix[i]=new Pixmap(QPixmap(":img/misc-blue.png"));
            pix[i]->setObjectName(name_items[i]);
            SceneShop->addItem(pix[i]);
            QPropertyAnimation *animation = new QPropertyAnimation(pix[i], "geometry");
            animation->setDuration(500);
            animation->setStartValue(QRect(-100, -100, -100, -100));
            animation->setEndValue(QRect(w, h, 140,50));
            animation->start();
            connect(pix[i],SIGNAL(clicked()),this,SLOT(ItemAdd()));
            QGraphicsTextItem *ite=new QGraphicsTextItem;
            ite->setHtml("<center>"+name_items[i]+"</center>");
            ite->setPos(QPointF(w+10,h+15));
            SceneShop->addItem(ite);
            if(w>=1200)
            {
                w=0;
                h+=80;
            }
            else
            {
                w+=150;
            }
        }
хотелось бы к pix получать доступ в определенных местах программы . не объявляя его в классе, требуется при определенных обстоятельствах менять картинку определенного элемента массива из pix
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Декабрь 11, 2011, 12:16 »

не объявляя его в классе
а почему нет?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
BuRn
Гость
« Ответ #2 : Декабрь 11, 2011, 14:33 »

не объявляя его в классе
а почему нет?
не знаю, не хочу
Записан
Rem Norton
Гость
« Ответ #3 : Декабрь 11, 2011, 14:50 »

Ну можно например через глобальную переменную. Или так:
Код
C++ (Qt)
...
Pixmap *pix[name_items.count()];
qApp->setProperty("pix",(int)pix);
...
 
// доступ в любом месте
Pixmap *pix = (Pixmap*)qApp->property("pix").toInt();
 
 
Записан
BRE
Гость
« Ответ #4 : Декабрь 11, 2011, 14:53 »

Или так:
А потом на 64-битной платформе программа перестанет работать и начнут появляться сообщения о новых "багах Qt". Улыбающийся
« Последнее редактирование: Декабрь 11, 2011, 15:06 от BRE » Записан
Rem Norton
Гость
« Ответ #5 : Декабрь 11, 2011, 15:25 »

int и указатель на любой платформе имеют одинаковый размер (32 и 64 бит соответственно).
Записан
BRE
Гость
« Ответ #6 : Декабрь 11, 2011, 16:08 »

int и указатель на любой платформе имеют одинаковый размер (32 и 64 бит соответственно).
А ты проверь. Подмигивающий
Код
C++ (Qt)
int main( int argc, char *argv[] )
{
       std::cout << sizeof( int ) << "   " << sizeof( void* ) << std::endl;
       return 0;
}
 

Вот у меня выводит так:
Цитировать
4   8
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #7 : Декабрь 11, 2011, 17:12 »

fixed: size_t, ptrdiff_t и указатель на любой платформе имеют одинаковый размер (32 и 64 бит соответственно).

P.S. В Qt аналогичные типы называются quintptr и qptrdiff.
« Последнее редактирование: Декабрь 11, 2011, 17:17 от LisandreL » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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