Qt — Показать анимированный GIF, выбранный QListWidget в MainWindow

заранее спасибо за чтение и помощь.

Я пытаюсь сделать GIF-менеджер на основе QListWidget, где вы можете выбрать GIF из списка (используя _ * _ itemClicked, как вы можете видеть ниже), и он будет отображать анимированный GIF в поле под списком (или сбоку). не имеет значения)

void MainWindow::on_listOfURL_itemClicked(QListWidgetItem *item)
{
QLabel* lab = new QLabel(this);
QMovie* mov = new QMovie(":/res/giftest/C:/Users/Rober/Desktop/giftest.gif");
lab->setGeometry(200, 200, 200, 200);
lab->setMovie(mov);
lab->show();
mov->start();
}

Скриншот GUI программы

Я попытался использовать кусок кода выше, но он ничего не показывает. Это просто бесполезная попытка заставить его работать, поэтому путь GIF такой же, вам не нужно об этом беспокоиться.

Честно говоря, я искал много кода на форумах и на этом самом сайте, касающегося GIFS и анимации, и ни одна из вещей, которые я видел, не сработала для меня.

Как мне поступить? Я полагаю, что я должен использовать некоторый графический QWidget в пользовательском интерфейсе и связать его с функцией на _ * _ itemClicked, чтобы он брал местоположение изображения из QListWidgetItem и отображал, куда я указал в пользовательском интерфейсе.

Я получил код, вставленный здесь, просматривая Mighty Google, и это вызывает у меня некоторые сомнения:

  • Я создаю QLabel с MainWindow в качестве родителя. Хорошо, но где это появится?
  • Разве я не могу создать в Designer виджет, который я могу определить, где он будет, и просто заставить работать GIF?

Я думаю, что я правильно объяснил, если не просто, дайте мне знать.

РЕДАКТИРОВАТЬ: Я думаю, что мне нужен QLabel, который находится внутри MainWindow, под списком URL. Как мне сформировать этот QLabel в QtDesigner, а затем взять тот же самый QLabel в коде и манипулировать им с помощью GIF?

0

Решение

Я думаю, вам нужно включить в .pro

QTPLUGIN     +=  qgif

и показать label->show();

Конечно, вы можете добавить вещи в дизайнере. Вы можете добавить собственные виджеты, которые вы создаете, но вам нужно создать специальный проект, который бы сделал «плагин» для Designer и построить его в режиме Release, а затем установить плагин в соответствующую папку плагина.
Для этого вы должны быть уверены, что они добавлены в файл .pro:

CONFIG      += plugin
TEMPLATE    = lib
QT          += widgets uiplugin

Затем вам нужно объявить и реализовать плагин, полученный из QObject AND QDesignerCustomWidgetInterface.

ПРОВЕРИТЬ достоверность: mov->isValid() Код, основанный на хороших внешних источниках, в конечном итоге становится источником небольших бедствий. Программе либо нужен плагин .dll рядом с ним, либо статический плагин, связанный с ним

Когда вы установили Qt, вы установили приложение под названием QtAssistant. Воспользуйтесь этим. Это большая помощь. а также их форумы и примеры хранения, которые вы получили в каталоге Qt. Qt5 получил пример плагина онлайн: http://doc.qt.io/qt-5/qtwidgets-tutorials-widgets-childwidget-example.html

0

Другие решения

Хорошо, я нашел ответ. Это было довольно глупо на самом деле:

Я не осознавал, что могу выбрать QLabel, созданный в QtDesigner, используя ui-> label, и манипулировать им.

ui->label->setMovie(selectedGif);
selectedGif->start();
ui->label->show();

Начинающие ошибки …

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector