#5 — Отображение изображения и статуса

В уроке мы научимся добавлять изображение в приложение, а также научимся работать с компонентом QStatusBar. Мы рассмотрим несколько способов добавление картинок, а также отображение различных статусов.
Видеоурок
В фреймворке Qt нет компонента, который отвечает конкретно за картинки. Чтобы добавить изображение в программу необходимо добавить текстовый объект и при помощи кода разместить в нем изображение.
Все изображения лучше всего хранить в самом проекте, а не на компьютере в какой-либо папке. Для хранения файлов в проекте необходимо создать папку resource и в неё добавить файлы.
Чтобы отобразить картинку необходимо использовать класс QPixMap , а также приблизительно следующий код:
QPixmap pix(":/resourec/img/image_name.png"); int w = ui->image->width(); int h = ui->image->height(); ui->image->setPixmap(pix.scaled(w, h, Qt::KeepAspectRatio));
Весь код записан в главном методе MainWindow , который вызывается каждый раз при создании приложения.
Статус бар
Для работы со статус баром используется объект statusBar , который автоматически присутствует в любом пустом приложении. Чтобы поместить туда информацию необходимо воспользоваться методом «showMessage».
Как вставить картинку в qt
![]()

Просмотр профиля
1.1.2009, 16:33
Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467
Репутация: 1
Не пойму, каким методом?
Например, есть у меня объект класса QWidget и QImage.
Создаю объект QImage :
QImage MyImage = new QImage(«newyear09.gif»,»GIF»);
как мне разместить это изображение на виджете?

опции профиля:
![]()

Просмотр профиля
1.1.2009, 17:08
Группа: Участник
Сообщений: 97
Регистрация: 23.4.2008
Из: г. Киров
Пользователь №: 155
Репутация: 1
На каком виджите ты хочешь размешать изображение? В общем случае его можно просто нарисовать на виджите, смотри методы отрисовки виджетов.

опции профиля:
![]()

Просмотр профиля
1.1.2009, 17:10
Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467
Репутация: 1
да я попробовал следующие :
MyImage = new QImage(«C:\\storage\\programming\\workspace\\1\\1.gif»);
WidgetForImage = new QWidget;
Painter = new QPainter(WidgetForImage);
Painter->drawImage(0,0,*MyImage);
// LayoutForImage->addWidget(MyImage);
// this->addLayout(LayoutForImage);
this->WidgetForImage->show();

опции профиля:
![]()

Просмотр профиля
1.1.2009, 18:19
Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68
Репутация: 6
и не должно быть.
ты должен выполнять этот код:
drawImage(0,0,*MyImage);
В событии виджета paintEvent(. ).
Есть вариант попроще: размести на виджете QLabel и засунь в QLabel пиксмап.

опции профиля:
![]()

Просмотр профиля
1.1.2009, 18:27
Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467
Репутация: 1
то есть нету простого способа создать виджет с изображением вставленным.

опции профиля:
![]()

Просмотр профиля
1.1.2009, 19:31
Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64
Репутация: 94
Цитата(Andrewshkovskii @ 1.1.2009, 21:27)
то есть нету простого способа создать виджет с изображением вставленным.
#include
int main(int argc, char** argv)
QApplication app(argc, argv);
QLabel lb;
QPixmap pix;
pix.load("./newyear09.gif");
lb.setPixmap(pix);
lb.show();
return app.exec();
>

опции профиля:
![]()

Просмотр профиля
1.1.2009, 23:56
Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467
Репутация: 1
Хм..странно, но метка просто-напросто не показывается..

опции профиля:
![]()

Просмотр профиля
2.1.2009, 1:01
Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64
Репутация: 94
Цитата(Andrewshkovskii @ 2.1.2009, 2:56)
Хм..странно, но метка просто-напросто не показывается..
значит файла newyear09.gif нет в каталоге с бинарем. Проверь.

опции профиля:
![]()

Просмотр профиля
2.1.2009, 1:06
Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467
Репутация: 1
да я проверял, и так и сяк. пишу вот так вот :
#include
int main(int argc, char** argv)
QApplication app(argc, argv);
QPixmap pix;
QLabel lbl;
if(pix.load("1.jpg")==false)
lbl.setText("FALSE");
else
lbl.setText("TRUE");
lbl.resize(pix.size());
lbl.setPixmap(pix);
lbl.show();
return app.exec();
>
сплошной false показывает..
Сообщение отредактировал Litkevich Yuriy — 2.1.2009, 1:13
Вставка изображения в графический интерфейс с помощью QT Designer
Я новичок в QtDesigner. Я хотел узнать, как вставить изображение в графический интерфейс с помощью QT Designer. Я пытаюсь добавить логотип. Буду признателен за помощь.
Поделиться Источник 16 февраля 2015 в 07:18
2 ответа
Вы можете начать вставлять метку. Затем щелкните ее правой кнопкой мыши, а затем нажмите «Изменить богатый текст. «. Всплывет новое окно. Нажмите на значок фигуры «Вставить фигуру».

Теперь вам нужно создать файл ресурса. Нажмите на кнопку Олицетворение. Затем нажмите на кнопку «Новый файл ресурса».

Выберите имя и папку (ваш рабочий каталог будет хорошим выбором), чтобы сохранить его.
Теперь нажмите на кнопку «Добавить префикс».

Выберите имя для него.
Затем нажмите на кнопку «Добавить файл».

И вот вы идите! Нажмите «ОК», и фигура должна быть там. Просто будьте внимательны, что вы должны изменить размер вашей фигуры до правильного размера перед использованием.
Надеюсь, это поможет!
Поделиться 14 марта 2017 в 01:52
Самый простой способ, который я видел, это:
Вы перетаскиваете свой Label в окно, выбираете Label, в правой части экрана вы увидите фрейм ‘Property Editor’ и меню ‘QLabel’, нажимаете на pixmap => Выберите File. выбираете файл и все.

Убедитесь, что вы уже изменили его размер, вы не сможете сделать это в QtDesigner.
Просто для того, чтобы знать, что я только начинающий в PyQT5 / QtDesigner, поэтому это может быть не правильным способом сделать это.
[Qt][Основы] Картинка в таблице
Задача: отобразить картинку (jpeg, png или gif) в ячейке таблицы. Я только начинаю изучать Qt, да и плюсы тоже, поэтому тупо не понимаю, как это лучше делать. Пока на ум приходят только два варианта: 1) Унаследовать QTableWidgetItem и переписать метод, отвественный за отрисовку компонента (какой? paint() вроде бы нигде нет) 2) Использовать технологию modell-view и написать собственный делегат для этой ячейки. В нем переписать метод paint().
Что из этого лучше, реальнее, проще? Или есть вообще какие-то другие варианты?
BobiKK ★
24.11.09 15:47:32 MSK