Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: BuRn от Декабрь 11, 2011, 03:30



Название: QPixmap как получить ?
Отправлено: 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


Название: Re: QPixmap как получить ?
Отправлено: kambala от Декабрь 11, 2011, 12:16
не объявляя его в классе
а почему нет?


Название: Re: QPixmap как получить ?
Отправлено: BuRn от Декабрь 11, 2011, 14:33
не объявляя его в классе
а почему нет?
не знаю, не хочу


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


Название: Re: QPixmap как получить ?
Отправлено: BRE от Декабрь 11, 2011, 14:53
Или так:
А потом на 64-битной платформе программа перестанет работать и начнут появляться сообщения о новых "багах Qt". :)


Название: Re: QPixmap как получить ?
Отправлено: Rem Norton от Декабрь 11, 2011, 15:25
int и указатель на любой платформе имеют одинаковый размер (32 и 64 бит соответственно).


Название: Re: QPixmap как получить ?
Отправлено: BRE от Декабрь 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


Название: Re: QPixmap как получить ?
Отправлено: LisandreL от Декабрь 11, 2011, 17:12
fixed: size_t, ptrdiff_t и указатель на любой платформе имеют одинаковый размер (32 и 64 бит соответственно).

P.S. В Qt аналогичные типы называются quintptr и qptrdiff.