widget.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include "widget.h"
  2. #include "./ui_widget.h"
  3. #include <QTimer>
  4. #include "spdlog/spdlog.h"
  5. #include "OpenGLWidgetAPI.h"
  6. #include "VideoPlayer.h"
  7. Widget::Widget(QWidget *parent)
  8. : QWidget(parent)
  9. , ui(new Ui::Widget)
  10. {
  11. ui->setupUi(this);
  12. loadOpenGLWidgetLibrary(); // 加载OpenGL窗口库
  13. // m_playerGLWidget = createOpenGLWidget(ui->widget_display);
  14. // m_playerGLWidget->show(); // 显示OpenGL窗口
  15. // m_playerGLWidget->setGeometry(0, 0, ui->widget_display->width(), ui->widget_display->height());
  16. // m_playerGLWidget->setStyleSheet(R"(border-radius:10px;)");
  17. // /* 设置背景颜色 */
  18. // this->setAutoFillBackground(true);
  19. // QPalette palette = m_playerGLWidget->palette();
  20. // palette.setColor(QPalette::Window, Qt::black); // 设置背景颜色为黑色
  21. // this->setPalette(palette);
  22. // connect(&m_timer, &QTimer::timeout, this, [&]() {
  23. // // SPDLOG_DEBUG("刷新一帧");
  24. // QImage image = QImage(":/image/1.jpg");
  25. // if(image.isNull()) {
  26. // SPDLOG_WARN("Image is null, cannot refresh.");
  27. // return;
  28. // }
  29. // refreshRGBAImage(m_playerGLWidget, image); // 显示一张测试图片
  30. // });
  31. // m_timer.setSingleShot(false);
  32. // m_timer.start(10); // 60 FPS
  33. playVdeio();
  34. }
  35. Widget::~Widget()
  36. {
  37. delete ui;
  38. }
  39. void Widget::playVdeio()
  40. {
  41. // QString videoFile = QApplication::applicationDirPath() + "/YPM.rmvb";
  42. // QString videoFile = QApplication::applicationDirPath() + "/2024-07-11.mp4";
  43. QString videoFile = QApplication::applicationDirPath() + "/4K烤鸭.mp4"; // 测试视频文件
  44. VideoPlayer* player = new VideoPlayer(this);
  45. player->setWidgetParent(ui->widget_display, true); // 设置播放窗口
  46. if(!player->openPlayVedio(videoFile))
  47. {
  48. SPDLOG_ERROR("Failed to open video file: {}", videoFile.toStdString());
  49. delete player; // 释放资源
  50. return;
  51. }
  52. player->play(); // 播放视频
  53. }
  54. void Widget::resizeEvent(QResizeEvent *event)
  55. {
  56. if (m_playerGLWidget) {
  57. m_playerGLWidget->setGeometry(0, 0, ui->widget_display->width(), ui->widget_display->height());
  58. }
  59. QWidget::resizeEvent(event);
  60. }