Qt creator как добавить картинку
Перейти к содержимому

Qt creator как добавить картинку

  • автор:

Вывести изображение на форму

Author24 — интернет-сервис помощи студентам

Вывести изображение на форму
Всем привет. Подскажите плиз как вывести изображение на форму.

Вывести ссылку на изображение в форму
В БД хранится ссылка на изображение. Эту ссылку нужно выводить в форме где выбирается изображение.

Вывести изображение на форму, в теории
Делаю окно о программе, чисто api без ресурсов. Хочу картинку вывести на форму, пологаеться так.

Вывести изображение на форму вручную
Можно ли как-то вывести на форму изображение. Вот, например, точно также, как овал.

Заблокирован

Author24 — интернет-сервис помощи студентам

0x90h, да и я также делал, хз че за фигня. главное никаких ошибок не выдает, просто молча показывает форму пустую, без картинки

633 / 639 / 100
Регистрация: 29.05.2015
Сообщений: 3,889

Не находит картинки и не выводит? Попробуй полный путь к файлу указать, типо C://temp//image.png ну и соответственно картинку в C:/temp кидануть.

Заблокирован

ЦитатаСообщение от alexu_007 Посмотреть сообщение

Не находит картинки и не выводит? Попробуй полный путь к файлу указать, типо C://temp//image.png ну и соответственно картинку в C:/temp кидануть.

ооо вот только теперь он наконец то ее вывел. блин а нельзя таки без полного пути? проект надо будет запустить и на другом компьютере, не охота каждый раз путь переписывать

633 / 639 / 100
Регистрация: 29.05.2015
Сообщений: 3,889
Вот так 100% работает, правда Qt 4-й. Надо полный путь к файлу писать, или в ресурсы его засовывать:
633 / 639 / 100
Регистрация: 29.05.2015
Сообщений: 3,889

ЦитатаСообщение от Penelent Посмотреть сообщение

блин а нельзя таки без полного пути?

В ресурсы засовывать, это не так сложно:

1. Добавление файла ресурсов в проект

Добавить файл ресурсов можно с помощью среды Qt Creator. Для этого нужно кликнуть правой кнопкой мыши на названии проекта и выбрать пункт Добавить новый. Далее, выбрать Qt и Файл ресурсов Qt. Введя название файла и подтвердив создание, среда создаст файл с расширением .qrc в папке с исходными кодами проекта.
2. Установка префикса

Чтобы использовать необходимые ресурсы, в данном случае картинки, в коде, необходимо установить префикс. Префикс устанавливается в созданном файле ресурсов в поле Префикс:. Префиксов можно создать несколько и в каждый добавлять нужные ресурсы. Каждый префикс должен начинаться с символа / (прямой слэш), например, /resource.
3. Добавление ресурсов (картинок)

Добавлять картинки в нужный префикс можно с помощью среды разработки используя кнопку Добавить -> Добавить файлы. При этом откроется диалоговое окно выбора файла.

Заметка! Все ресурсы которые добавляются в файл ресурсов должны быть в папке с исходниками проекта. Для этой цели можно создать папку images в папке проекта.
4. Использование ресурсов в коде
После того как в файл ресурсов были добавлены необходимые ресурсы, их можно использовать в коде. Делается это следующим образом:

1 2 3 4 5 6 7
void Widget::MyEventHandler1() { //QPixmap pic1 = QPixmap("C:\\QtSDK\\Alexu007\\Uchebnye\\ImageOnLabel\\imglabel\\images\\pic1.jpg"); QPixmap pic1 = QPixmap(":resourse/images/pic1.jpg"); ui->label->setPixmap(pic1); }

После этого файл картинки ваще не надо никуда с приложением таскать, он в ресурсах. Только эксешник и библиотеки.

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

#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 creator как добавить картинку

Элемент Image предназначен для вывода изображений. Для управления выводом этот элемент предоставляет ряд свойств. Рассмотрим основные из них:

  • asynchronous : указывает, что изображения в локальной файловой системе должны загружаться асинхронно в отдельном потоке. Значение по умолчанию — false , что приводит к блокировке потока пользовательского интерфейса во время загрузки изображения. Установка значения true позволяет построить отзывчивый пользовательский интерфейс, однако изображение в связи с загрузкой отображается не сразу.
  • cache : указывает, следует ли кэшировать изображение. Значение по умолчанию true . Установка значения false полезна при работе с большими изображениями, чтобы гарантировать, что они не кэшируются за счет небольших изображений.
  • fillMode : определяет поведение элемента, если размер исходного изображения отличается от размера элемента
  • horizontalAlignment : выравнивание по горизонтали. Может принимать значения:
    • Image.AlignLeft
    • Image.AlignRight
    • Image.AlignHCenter
    • Image.AlignTop
    • Image.AlignBottom
    • Image.AlignVCenter
    • Image.Null : Изображение не установлено
    • Image.Ready : Изображение загружено.
    • Image.Loading : Изображение в данный момент загружается.
    • Image.Error : Произошла ошибка при загрузке изображения.

    Ключевое свойство — source , которое определяет адрес изображения. Однако добавление файла изображения и его связь с элементом Image — не самый интуитивный процесс, поэтому рассмотрим его поэтапно. Прежде всего возьмем файл изображения и добавим его проект. Для этого можно перейти в стандартный интерфейс проводника текущей файловой системы и через него скопировать в проект нужный нам файл. Либо можно все сделать из Qt Creator. Рассмотрим второй вариант. Для этого в Qt Creator перейдем в режим файловой системы проекта:

    Переход к файловой системе проекта в Qt Creator

    Определим для изображений отдельный каталог. Для этого в открывшемся представлении проекта нажмем правой кнопкой мыши на свободное пространство и во всплывающем контекстном меню выберем New Folder (Добавить папку)

    Добавление папки в проект в Qt Creator

    Допустим, новая папка будет называться images . Через проводник текущей операционной системы добавим в новую папку файл изображения. Например, в моем случае это будет файл «forest.png»:

    Добавление файла в папку в проект в Qt Creator

    Переключимся обратно на вид проекта (опция Projects), нажмем на название проекта правой кнопкой мыши и в контекстном меню выберем пункт Add Existing Directory. :

    Добавление папки ресурсов в проект в Qt Creator

    На открывшемся окне выберем ранее добавленную папку images с добавленным в нее изображением

    Добавление ресурсов в проект в Qt Creator

    После этого в проект будет связан с ресурсами-изображениями из папки images

    Добавление и настройка файла ресурсов в проект в Qt Creator

    А в файле CMakeLists.txt появится запись о наличии ресурсов в проекте

    # Добавляем файлы qml qt_add_qml_module(QmlApp URI path VERSION 1.0 QML_FILES main.qml RESOURCES images/forest.png # доступный ресурс )

    Мы можем вручную добавить в проект нужные папки и файлы и затем подредактировать файл CMakeLists.txt , чтобы проект воспринимал их как ресурсы.

    Для отображения этого изображения в файле main.qml определим следующий интерфейс:

    import QtQuick Window < width: 250 height: 180 visible: true title: "METANIT.COM" Image < anchors.fill: parent source: "images/forest.png" >>

    Здесь определен один элемент Image , который растянут по всему пространству окна, а его свойство source указывает на ресурс «images/forest.png». И при запуске приложения отобразится указанный ресурс изображения:

    Добавление ресурсов в проект в Qt Creator

    Причем в элементе Image могут располагаться и другие элементы, которые накладываются на изображение. Например, элемент Text:

    import QtQuick Window < width: 250 height: 200 visible: true title: "METANIT.COM" Image< anchors.fill: parent source: "images/forest.png" Text < text: "Зимний лес" width: parent.width horizontalAlignment: Text.AlignHCenter font.pixelSize: 16 >> >

    Наложение элементов на изображение в элементе Image в QML и Qt

    Заполнение пространства изображением

    Свойство fillMode определяет поведение элемента, если размер исходного изображения отличается от размера элемента. Может принимать следующие значения:

    • Image.Stretch : изображение масштабируется по размеру
    • Image.PreserveAspectFit : изображение масштабируется равномерно, чтобы соответствовать размеру, без обрезки.
    • Image.PreserveAspectCrop : изображение масштабируется равномерно для заполнения, при необходимости обрезается.
    • Image.Tile : изображение дублируется по горизонтали и вертикали.
    • Image.TileVertically : изображение растягивается по горизонтали и дублируется по вертикали.
    • Image.TileHorizontally : изображение растягивается по вертикали и дублируется по горизонтали.
    • Image.Pad : изображение не изменяется
    import QtQuick Window < width: 250 height: 450 visible: true title: "METANIT.COM" Column< anchors.fill: parent spacing: 5 padding: 5 Row < Image < width:80 height: 60 fillMode: Image.Pad source: "images/cpp.png" >Text < text: "Image.Pad" >> Row < Image < width:80 height: 60 fillMode: Image.Stretch source: "images/cpp.png" >Text < text: "Image.Stretch" >> Row < Image < width:80 height: 60 fillMode: Image.PreserveAspectFit source: "images/cpp.png" >Text < text: "Image.PreserveAspectFit" >> Row < Image < width:80 height: 60 fillMode: Image.PreserveAspectCrop source: "images/cpp.png" >Text < text: "Image.PreserveAspectCrop" >> Row < Image < width:80 height: 60 fillMode: Image.Tile horizontalAlignment: Image.AlignLeft verticalAlignment: Image.AlignTop source: "images/cpp.png" >Text < text: "Image.Tile" >> Row < Image < width:80 height: 60 fillMode: Image.TileVertically verticalAlignment: Image.AlignTop source: "images/cpp.png" >Text < text: "Image.TileVertically" >> Row < Image < width:80 height: 60 fillMode: Image.TileHorizontally horizontalAlignment: Image.AlignLeft source: "images/cpp.png" >Text < text: "Image.TileHorizontally" >> > >

    Стоит отметить, что для опций Image.Tile / Image.TileVertically / Image.TileHorizontally может потребоваться настроить выравнивание.

    Масштабирование изображений и элемент Image в QML и Qt

    Зеркальное отражение

    Свойства mirror и mirrorVertically позволяют отразить изображение по горизонтали и вертикали соответственно:

    import QtQuick Window < width: 250 height: 450 visible: true title: "METANIT.COM" Column< anchors.fill: parent spacing: 5 padding: 5 Image < width: 80 height: 80 source: "images/cpp.png" >Image < width: 80 height: 80 mirror:true source: "images/cpp.png" >Image < width: 80 height: 80 mirrorVertically:true source: "images/cpp.png" >> >

    Здесь первое изображение без какого-либо отражения. Ко второму изображению применяется зеркальное отражение по горизонтали, а к третьему — отражение по вертикали:

    Как в Pyqt добавить картинку к combobox через Qt designer?

    WolfInChains

    Рабочий, вы скорее всего не добавили картинку в resource root5f9d827ac3752651860592.png
    5f9d82bb18216849835222.png

    Ответ написан более трёх лет назад

    Adven4er @Adven4er Автор вопроса

    Эта проблема решилась, но возникла другая. Я для работы с формой перевожу её в .py и в этом файле импортируется модуль res_rc. Но при запуске возникает ошибка, что такого модуля нет. Как это можно починить?

    WolfInChains

    WolfInChains @WolfInChains

    Ответы на вопрос 0

    Ваш ответ на вопрос

    Войдите, чтобы написать ответ

    pyqt

    • PyQt
    • +1 ещё

    Микроконтроллер отправляет через UART-USB преобразователь строки в виртуальный COM порт. Почему они отображаются кусками?

    • 1 подписчик
    • 11 янв.
    • 28 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *