widgetViewPhoto.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #include "widgetViewPhoto.h"
  2. #include "ui_widgetViewPhoto.h"
  3. #include <QFile>
  4. #include <QDesktopWidget>
  5. #include "CAppInfo.h"
  6. #include "logproc.h"
  7. widgetViewPhoto::widgetViewPhoto(int nIndex, QStringList list, QWidget *parent) :
  8. QWidget(parent),
  9. ui(new Ui::widgetViewPhoto), m_list(list)
  10. {
  11. ui->setupUi(this);
  12. m_nIdex = nIndex;
  13. setStyleSheet(g_appInfoPtr->m_sQssStr);
  14. initUI();
  15. }
  16. widgetViewPhoto::~widgetViewPhoto()
  17. {
  18. delete ui;
  19. }
  20. void widgetViewPhoto::initUI()
  21. {
  22. QDesktopWidget *dekwiget = QApplication::desktop();
  23. setGeometry(0, 0, dekwiget->width(), dekwiget->height());
  24. ui->widget_vp_bg->setGeometry(0, 0, width(), height());
  25. ui->widget_vp_client->setGeometry(g_appInfoPtr->m_fRate*80, g_appInfoPtr->m_fRate*54, width() - g_appInfoPtr->m_fRate*80*2, height() - g_appInfoPtr->m_fRate*54*2);
  26. ui->btn_vp_close->setGeometry(ui->widget_vp_client->width() - g_appInfoPtr->m_fRate*10 - g_appInfoPtr->m_fRate*24, g_appInfoPtr->m_fRate*10, g_appInfoPtr->m_fRate*24, g_appInfoPtr->m_fRate*24);
  27. ui->label_vp_photo->setGeometry(g_appInfoPtr->m_fRate*82, g_appInfoPtr->m_fRate*40, ui->widget_vp_client->width() - g_appInfoPtr->m_fRate*82*2, ui->widget_vp_client->height() - g_appInfoPtr->m_fRate*40*2);
  28. ui->btn_prev_photo->setGeometry(g_appInfoPtr->m_fRate*20, (ui->widget_vp_client->height() - g_appInfoPtr->m_fRate*40)/2, g_appInfoPtr->m_fRate*22, g_appInfoPtr->m_fRate*40);
  29. ui->btn_next_photo->setGeometry(ui->widget_vp_client->width() - g_appInfoPtr->m_fRate*20 - ui->btn_prev_photo->width(), ui->btn_prev_photo->y(),
  30. ui->btn_prev_photo->width(), ui->btn_prev_photo->height());
  31. QString sFileName = m_list[m_nIdex].right(m_list[m_nIdex].length() - m_list[m_nIdex].lastIndexOf("/") - 1);
  32. sFileName = g_appInfoPtr->m_sCacheFileDir + sFileName;
  33. showImage(sFileName);
  34. }
  35. void widgetViewPhoto::on_btn_prev_photo_clicked()
  36. {
  37. if(m_nIdex > 0)
  38. {
  39. m_nIdex--;
  40. QString sFileName = m_list[m_nIdex].right(m_list[m_nIdex].length() - m_list[m_nIdex].lastIndexOf("/") - 1);
  41. sFileName = g_appInfoPtr->m_sCacheFileDir + sFileName;
  42. showImage(sFileName);
  43. }
  44. }
  45. void widgetViewPhoto::on_btn_next_photo_clicked()
  46. {
  47. if(m_nIdex != m_list.count() - 1)
  48. {
  49. m_nIdex++;
  50. QString sFileName = m_list[m_nIdex].right(m_list[m_nIdex].length() - m_list[m_nIdex].lastIndexOf("/") - 1);
  51. sFileName = g_appInfoPtr->m_sCacheFileDir + sFileName;
  52. showImage(sFileName);
  53. }
  54. }
  55. void widgetViewPhoto::showImage(QString sImage)
  56. {
  57. int nWidth = ui->widget_vp_client->width() - g_appInfoPtr->m_fRate*82*2;
  58. int nHeight = ui->widget_vp_client->height() - g_appInfoPtr->m_fRate*40*2;
  59. QPixmap pix(sImage);
  60. if (pix.isNull())
  61. {
  62. return;
  63. }
  64. int pixWidth = pix.width();
  65. int pixHeight = pix.height();
  66. double fWRate = (double)(nWidth)/pixWidth;
  67. double fHRate = (double)(nHeight) / pixHeight;
  68. if (fWRate > fHRate)
  69. {
  70. nWidth = nHeight* pix.width() / pix.height();
  71. }
  72. else
  73. {
  74. nHeight = nWidth * pix.height() / pix.width();
  75. }
  76. ui->label_vp_photo->setGeometry((ui->widget_vp_client->width() - nWidth) / 2,
  77. (ui->widget_vp_client->height() - nHeight) / 2, nWidth, nHeight);
  78. ui->label_vp_photo->setPixmap(pix.scaled(nWidth, nHeight,
  79. Qt::KeepAspectRatio, Qt::SmoothTransformation));
  80. }
  81. void widgetViewPhoto::on_btn_vp_close_clicked()
  82. {
  83. emit viewImgClose();
  84. }