Russian Qt Forum

Qt => Мультимедиа => Тема начата: Newb от Апрель 09, 2009, 18:19



Название: Вопрос про загрузку изображения с файла
Отправлено: Newb от Апрель 09, 2009, 18:19
Я новенький не давно начал знакомится с кьют, и  просматривая не большие програмки даже заметил что изображения с файлов не загружаются ни при каких условиях! Почему не грузится изображение таким образом ?
Код:
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QLabel lbl;
    QPixmap pix("mira.jpg");
    lbl.setPixmap(pix);
    lbl.show();
    return app.exec();
}
так же заменял на
Код:
 pix.load("mira.jpg"); 
и она возвращала фалс! В чем может быть причина файл наъодится в каталоге с програмой, и загрузки не происходит все равно.


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: lit-uriy от Апрель 09, 2009, 18:44
Цитировать
Я новенький не давно начал знакомится с кьют, и
Стало быть в тему для новичков, да и ответ там есть, поищи.


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: Newb от Апрель 09, 2009, 22:05
Спасиб! Сорь не успел посмотреть форум времени не было быстро написал где что топро изображения!


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: pastor от Апрель 09, 2009, 22:12
Поробуй так:

Код
C++ (Qt)
int main(int argc, char** argv)
{
   QApplication app(argc, argv);
   QLabel lbl;
   QString imgfile = QCoreApplication::applicationDirPath() + QDir::separator() + "mira.jpg";  //full path to mira.jpg
   QPixmap pix(imgfile);
   lbl.setPixmap(pix);
   lbl.show();
   return app.exec();
}

Также почитай в ассистанте раздел The Qt Resource System


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: Newb от Апрель 10, 2009, 00:52
большое спасибо! И еще маленько не подскажите, сильно не вдавайсь читая потихоньку и смотря примеры попробовал встроить возможность просто рисовать напрямую ивентом. Но что-то он пишет что не активный painter у меня! Пытался просто создать паинтер и нарисовать им в виджете, но он не хотел. Есть в голове другие решения, но хотелось узнать как сделать так что бы ни чего не пересовывать а просто дорисовать одну точку или линию в зависимости от действия! Еще раз большое спасибо


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: spirit от Апрель 10, 2009, 08:31
код можно глянуть?


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: Newb от Апрель 10, 2009, 10:18
Вот такой был
Код:
virtual void mousePressEvent(QMouseEvent* pe) {
        QPainter painter;
        painter.drawPoint(pe->pos());
    }
Пытался инициализировать painter(this), но пишет паинтер нот актив, аборт.


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: spirit от Апрель 10, 2009, 10:26
так на чем рисовать-то надо: на форме или на пиксмапе?
если на форме, то нужно рисовать в paintEvent и инициализировать QPainter painter(this);,
если на пиксмапе, то инизиализировать нужно пиксмапом, т.е.
Код
C++ (Qt)
...
QPixmap pixmap(100, 100);
QPainter painter(&pixmap);
...
 


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: Newb от Апрель 10, 2009, 10:38
Рисовать над на Widget, и Ивент был в классе наследованном от виджет написан, и как-то я думал что при попытке поставить this будет считатся рисовать на своем окне.


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: spirit от Апрель 10, 2009, 10:41
Рисовать над на Widget, и Ивент был в классе наследованном от виджет написан, и как-то я думал что при попытке поставить this будет считатся рисовать на своем окне.
не понял, если честно  :)
ты ивент фильтр ставил на виджет на котором рисовать хочешь? тогда да, this тут не катит,
надо инициализировать тем виджетом, на котором будет отрисовка осуществляться.


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: Newb от Апрель 10, 2009, 10:56
Ну вот у меня класс
Код:
PaintArea : public QWidget 
{
virtual void paintEvent(QPaintEvent*){} //drawing

virtual void mousePressEvent(QMouseEvent* pe)
        QPainter painter(this);
        painter.drawPoint(pe->pos());
    }
}
Я просто думал, что так как Ивент в классе виджета, он его паинтер и возьмет. В паинтИвент я могу нарисовать на етом видэжете но хотелось попробовать так сделать.


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: spirit от Апрель 10, 2009, 11:05
ну в общем создавать паинтер надо в paintEvent, в mousePressEvent запоминай точку,
а затем рисуй ее, опять таки, в paintEvent.


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: Newb от Апрель 10, 2009, 11:35
Спасиб я знал что можно создать масив точек и туда вносить их для рисования что б они не пропадали или соеденять в  фигуры, но хотелось попробовать как-нибудь так!


Название: Re: Вопрос про загрузку изображения с файла
Отправлено: spirit от Апрель 10, 2009, 11:36
ну дрогой вариант, это рисовать на QPixmap, а потом рендерить картинку в paintEvent.
это уж как тебе нравится.  :)