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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос про загрузку изображения с файла  (Прочитано 7277 раз)
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"); 
и она возвращала фалс! В чем может быть причина файл наъодится в каталоге с програмой, и загрузки не происходит все равно.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 09, 2009, 18:44 »

Цитировать
Я новенький не давно начал знакомится с кьют, и
Стало быть в тему для новичков, да и ответ там есть, поищи.
« Последнее редактирование: Апрель 09, 2009, 18:47 от lit-uriy » Записан

Юра.
Newb
Гость
« Ответ #2 : Апрель 09, 2009, 22:05 »

Спасиб! Сорь не успел посмотреть форум времени не было быстро написал где что топро изображения!
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Апрель 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
« Последнее редактирование: Апрель 09, 2009, 22:14 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Newb
Гость
« Ответ #4 : Апрель 10, 2009, 00:52 »

большое спасибо! И еще маленько не подскажите, сильно не вдавайсь читая потихоньку и смотря примеры попробовал встроить возможность просто рисовать напрямую ивентом. Но что-то он пишет что не активный painter у меня! Пытался просто создать паинтер и нарисовать им в виджете, но он не хотел. Есть в голове другие решения, но хотелось узнать как сделать так что бы ни чего не пересовывать а просто дорисовать одну точку или линию в зависимости от действия! Еще раз большое спасибо
« Последнее редактирование: Апрель 10, 2009, 01:02 от Newb » Записан
spirit
Гость
« Ответ #5 : Апрель 10, 2009, 08:31 »

код можно глянуть?
Записан
Newb
Гость
« Ответ #6 : Апрель 10, 2009, 10:18 »

Вот такой был
Код:
virtual void mousePressEvent(QMouseEvent* pe) {
        QPainter painter;
        painter.drawPoint(pe->pos());
    }
Пытался инициализировать painter(this), но пишет паинтер нот актив, аборт.
Записан
spirit
Гость
« Ответ #7 : Апрель 10, 2009, 10:26 »

так на чем рисовать-то надо: на форме или на пиксмапе?
если на форме, то нужно рисовать в paintEvent и инициализировать QPainter painter(this);,
если на пиксмапе, то инизиализировать нужно пиксмапом, т.е.
Код
C++ (Qt)
...
QPixmap pixmap(100, 100);
QPainter painter(&pixmap);
...
 
Записан
Newb
Гость
« Ответ #8 : Апрель 10, 2009, 10:38 »

Рисовать над на Widget, и Ивент был в классе наследованном от виджет написан, и как-то я думал что при попытке поставить this будет считатся рисовать на своем окне.
Записан
spirit
Гость
« Ответ #9 : Апрель 10, 2009, 10:41 »

Рисовать над на Widget, и Ивент был в классе наследованном от виджет написан, и как-то я думал что при попытке поставить this будет считатся рисовать на своем окне.
не понял, если честно  Улыбающийся
ты ивент фильтр ставил на виджет на котором рисовать хочешь? тогда да, this тут не катит,
надо инициализировать тем виджетом, на котором будет отрисовка осуществляться.
Записан
Newb
Гость
« Ответ #10 : Апрель 10, 2009, 10:56 »

Ну вот у меня класс
Код:
PaintArea : public QWidget 
{
virtual void paintEvent(QPaintEvent*){} //drawing

virtual void mousePressEvent(QMouseEvent* pe)
        QPainter painter(this);
        painter.drawPoint(pe->pos());
    }
}
Я просто думал, что так как Ивент в классе виджета, он его паинтер и возьмет. В паинтИвент я могу нарисовать на етом видэжете но хотелось попробовать так сделать.
Записан
spirit
Гость
« Ответ #11 : Апрель 10, 2009, 11:05 »

ну в общем создавать паинтер надо в paintEvent, в mousePressEvent запоминай точку,
а затем рисуй ее, опять таки, в paintEvent.
Записан
Newb
Гость
« Ответ #12 : Апрель 10, 2009, 11:35 »

Спасиб я знал что можно создать масив точек и туда вносить их для рисования что б они не пропадали или соеденять в  фигуры, но хотелось попробовать как-нибудь так!
Записан
spirit
Гость
« Ответ #13 : Апрель 10, 2009, 11:36 »

ну дрогой вариант, это рисовать на QPixmap, а потом рендерить картинку в paintEvent.
это уж как тебе нравится.  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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