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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: gif без проблем  (Прочитано 19829 раз)
darkmacho
Гость
« Ответ #15 : Декабрь 05, 2008, 21:44 »

у меня есть :
QPixmap *p[15];
QMovie *pp[15];
В  *p -png формат, в *pp - gif формат
В начале  выводиться весь массив *p как таблица .
При нажатии какой-нибудь клавиши мне нужно что бы вместо них появились элементы *pp т.е. проигрывались gif файлы .Вот и все!
Записан
spirit
Гость
« Ответ #16 : Декабрь 05, 2008, 21:46 »

ну вот размести необходимое кол-во QLabel и сетай в цикле пиксмапы, а потом по нужному событию сетай в этиже QLabel свои QMovie.
Записан
darkmacho
Гость
« Ответ #17 : Декабрь 05, 2008, 21:50 »

понял все а как изменить координаты лейбла знаю что есть lbl.x и lbl.y  как их изменить
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #18 : Декабрь 05, 2008, 21:54 »

Я чего-то непойму. Зачем менять координаты?

1) Размести на виджете 15 QLabel
2) Установи png картинки для них из массива p
3) По нашатию какой либо кнопки, установи gif картинки из массива pp

В чем сложность?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
darkmacho
Гость
« Ответ #19 : Декабрь 05, 2008, 21:56 »

ну вот эти 15 QLabel нужно для каждой свои координаты как их задавать
для QPixmapa же drawPixmap(x,y,img); x,y- координаты.как с лейблом быть то?
Записан
spirit
Гость
« Ответ #20 : Декабрь 05, 2008, 21:59 »

юзай QGridLayout
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #21 : Декабрь 05, 2008, 22:00 »

ну вот эти 15 QLabel нужно для каждой свои координаты как их задавать

Для этого нужн открыть книгу (или ассистант) по Qt и почитать про QLayout, QGridLayout, QHBoxLayout, QVBoxLayout etc
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
darkmacho
Гость
« Ответ #22 : Декабрь 06, 2008, 12:06 »

А по проще нельзя а то там щас все менять надо
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #23 : Декабрь 06, 2008, 12:55 »

А по проще нельзя а то там щас все менять надо
например как?
Записан

Юра.
darkmacho
Гость
« Ответ #24 : Декабрь 07, 2008, 23:03 »

Это же для того что бы когда окно можно было расширать все было на местах, а у меня окно у которого нельзя изменять размеры.И мне не понятно как создавать лейблы без рамки, а то рядом с главным окном появляетя и это лейбл
Записан
ритт
Гость
« Ответ #25 : Декабрь 08, 2008, 09:36 »

опять чушь какая-то. давай код...
Записан
darkmacho
Гость
« Ответ #26 : Декабрь 08, 2008, 12:01 »

Вот :
Код:
#include <qapplication.h>
#include<qpixmap.h>
#include <qlabel.h>
#include<qmovie.h>
#include <QMouseEvent>
#include<qbitmap>
#include <qpainter.h>
#include<qtime>
#include<vector>
#include<list>
#include<qlist>
bool yes=false;


class Window : public QLabel {

private:
    QPoint  m_ptPosition;

protected:
  /*  virtual void Window::mousePressEvent(QMouseEvent* pe)
    {
        m_ptPosition = pe->pos();
   }
*/
/*
    virtual void Window::mouseMoveEvent(QMouseEvent* pe)
    {
        move(pe->globalPos() - m_ptPosition);
    }
*/
virtual  void Window::mousePressEvent(QMouseEvent* pe);
   

    virtual void  keyPressEvent(QKeyEvent* e);

public:
    Window(QWidget* pwgt = 0)
: QLabel(pwgt,Qt::FramelessWindowHint | Qt::Window)
    {
    }



void paintEvent( QPaintEvent * );
void NewPix();
int who_is,who_isx,who_isy;
QPixmap *p[20];
QMovie *pp[20];
QPixmap *ball;
QPoint m[6][5];
int who[6][5];
int sost[6][5];
QList <int> kept;
QList <int>:: iterator er;
QLabel lbl;
int schet;
};

void Window::NewPix()
{
int temp;
schet=0;
qint32 tx=80,ty=100;

for(qint32 y=0;y<5;y++)
{
for(qint32 x=0;x<6;x++)
{m[x][y].setX(tx);
m[x][y].setY(ty);
tx+=100;
}
tx=80;
ty+=110;
}
QTime time;
srand(time.second());

for(int i=0;i<15;i++)
{temp=rand()%15;
kept.append(temp);
kept.append(temp);
}

for(int y=0;y<5;y++)
{
for(int x=0;x<6;x++)
{ temp=rand()%kept.count();
who[x][y]=kept.at(temp);
kept.removeAt(temp);
//kept.remove(temp);
//schet++;
}
}

//if(kept.count==0) exit(0);

p[0]= new QPixmap(  "img/1.png");   
p[1]= new QPixmap(  "img/2.png"); 
p[2]= new QPixmap(  "img/3.png"); 
p[3]= new QPixmap(  "img/4.png"); 
p[4]= new QPixmap(  "img/5.png"); 
p[5]= new QPixmap(  "img/6.png"); 
p[6]= new QPixmap(  "img/7.png"); 
p[7]= new QPixmap(  "img/8.png");   
p[8]= new QPixmap(  "img/9.png"); 
p[9]= new QPixmap(  "img/10.png"); 
p[10]= new QPixmap(  "img/11.png"); 
p[11]= new QPixmap(  "img/12.png"); 
p[12]= new QPixmap(  "img/13.png"); 
p[13]= new QPixmap(  "img/14.png"); 
p[14]= new QPixmap(  "img/15.png"); 

ball=new QPixmap(  "img/16.png"); 

pp[0]= new QMovie(  "img/1.gif");   
pp[1]= new QMovie(  "img/2.gif"); 
pp[2]= new QMovie(  "img/3.gif"); 
pp[3]= new QMovie(  "img/4.gif"); 
pp[4]= new QMovie(  "img/5.gif"); 
pp[5]= new QMovie(  "img/6.gif"); 
pp[6]= new QMovie(  "img/7.gif"); 
pp[7]= new QMovie(  "img/8.gif");   
pp[8]= new QMovie(  "img/9.gif"); 
pp[9]= new QMovie(  "img/10.gif"); 
pp[10]= new QMovie(  "img/11.gif"); 
pp[11]= new QMovie(  "img/12.gif"); 
pp[12]= new QMovie(  "img/13.gif"); 
pp[13]= new QMovie(  "img/14.gif"); 
pp[14]= new QMovie(  "img/15.gif"); 


for(int y=0;y<5;y++)
for(int x=0;x<6;x++)
              sost[x][y]=0;

who_is=-1;
who_isx=-1;
who_isy=-1;
}


 void Window::mousePressEvent(QMouseEvent* pe)
    {//exit(0);
int h=pe->x(),t=pe->y();       
for(qint32 y=0;y<5;y++)
for(qint32 x=0;x<6;x++)
{

if(m[x][y].x()<h && m[x][y].x()+75>h && m[x][y].y()<t && m[x][y].y()+100>t)
if(sost[x][y]!=2)
{
if (who_is==who[x][y]){schet+=5;sost[x][y]=2; sost[who_isx][who_isy]=2;sost[x][y]==2; who_is=-1; update();}
else
if(who_is==-1) {who_is=who[x][y];who_isx=x;who_isy=y;sost[x][y]=1; update();}
else
if(who_is!=-1 && who_is!=who[x][y])
{who_is=-1;sost[who_isx][who_isy]=0;update(); }
}
}

    }


void Window::paintEvent( QPaintEvent * )
{ QPainter pip;

QString st=QString::number(schet);

    pip.begin(this);
pip.setFont(QFont("Times",25,QFont::Normal));
pip.drawPixmap(0,0,QPixmap("img/screen6.png"));
pip.drawText(800,100,st);

if(yes)
{for(qint32 y=0;y<5;y++)
for(qint32 x=0;x<6;x++)

if(sost[x][y]==0) pip.drawPixmap(m[x][y],*ball);
else
if(sost[x][y]==1)
pip.drawPixmap(m[x][y],*p[who[x][y]]);

}
pip.end();
}

void Window::keyPressEvent(QKeyEvent* e)
{ if(e->key()==Qt::Key_Return) exit(0);

    if(e->key()==Qt::Key_Space)
{yes=true;
update();
}
}



// ----------------------------------------------------------------------
int main(int argc, char** argv)
{ QApplication app(argc, argv);   
Window win;
QPixmap pix("img/screen6.png");

win.NewPix();
win.setWindowTitle("My games");
win.move(30,30);
win.setPixmap(pix);
win.setMask(pix.mask());
//win.setBaseSize(1500,1500);
win.setFixedHeight(800);
win.setFixedWidth(1000);
win.show();



    return app.exec();
}
Записан
spirit
Гость
« Ответ #27 : Декабрь 08, 2008, 12:10 »

может лучше заюзать QGraphicsView исходя из того, что это попытка создания игры.  Подмигивающий
Записан
ритт
Гость
« Ответ #28 : Декабрь 08, 2008, 12:36 »

ага, ну, понятино чего ты хочешь добиться...
а в чём тогда проблема? рисуй мувик покадрово (так же, как пиксмап, но с постоянным сдвигом на фрэйм) - все необходимые методы QMovie предоставляет. если сам пока не придумал как это будет, советую подсмотреть как реализовано в QLabel.
в реализации как у тебя Q*Layout действительно не нужен...
Записан
darkmacho
Гость
« Ответ #29 : Декабрь 08, 2008, 12:46 »

 Непонимающий извините я не понял.Т.е. нужно как-то менять кадр в каждой кратинке что ли и потом показывать там же таймер нужен будет так?
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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