QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)
生活随笔
收集整理的這篇文章主要介紹了
QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作為新手小白的一些分享。。。。。。。
其中一部分功能要求顯示多張圖片,如果圖片總高度超過工具窗口的高度就要有滾動條出現,實現滾屏的效果,網上這部分內容少之又少,我就把效果和代碼都貼出來供大家參考。
想看QT 實現滾屏顯示多張漂亮美眉片(可放大縮小),可以跳過第一種方式,直接看第二種方式。
我這里介紹兩種方式,首先一種簡單的方式,展示效果如下,實現QWidget的滾動條,在Qt Designer中,QScrollArea已經實現好的帶有滾動條的控件。
功能實現代碼如下,非常簡單。
第二種方式,用PyQt5高級界面控件QListWidget,先展示一下效果,實現顯示漂亮美眉,哈哈哈哈哈哈,是我本人(害羞):
UI界面代碼實現如下:
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'ui_ImageBrowserWidget1.ui' # # Created by: PyQt5 UI code generator 5.14.2 # # WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgets"被jiemian調用 顯示圖片的縮略圖 并且用滾動條"class Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(400, 574)self.sliderScale = QtWidgets.QSlider(Form)self.sliderScale.setGeometry(QtCore.QRect(20, 0, 361, 22))self.sliderScale.setOrientation(QtCore.Qt.Horizontal)self.sliderScale.setObjectName("sliderScale")self.listWidgetImages = QtWidgets.QListWidget(Form)self.listWidgetImages.setGeometry(QtCore.QRect(10, 30, 371, 501))self.listWidgetImages.setDragEnabled(True)self.listWidgetImages.setMovement(QtWidgets.QListView.Static)self.listWidgetImages.setFlow(QtWidgets.QListView.LeftToRight)self.listWidgetImages.setResizeMode(QtWidgets.QListView.Adjust)self.listWidgetImages.setViewMode(QtWidgets.QListView.IconMode)self.listWidgetImages.setModelColumn(0)self.listWidgetImages.setObjectName("listWidgetImages")self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(10, 540, 113, 32))self.pushButton.setObjectName("pushButton")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.pushButton.setText(_translate("Form", "show plmm"))業務邏輯代碼如下,點擊"show plmm"按鈕,實現多張圖片的顯示,可放大縮小并滾動:
import sys import cv2from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog from PyQt5.QtWidgets import QWidget, QListWidgetItem, QListView from PyQt5.QtGui import QImage, QPixmap, QIcon from PyQt5.QtCore import Qt, QSize, pyqtSignalfrom ui_ImageBrowserWidget1 import Ui_Form"顯示多張圖片的縮略圖 加滾動條"FrameIdxRole = Qt.UserRole + 1class MyMainForm(QMainWindow, Ui_Form):def __init__(self, parent=None):super(MyMainForm, self).__init__(parent)self.setupUi(self)self.pushButton.clicked.connect(self.display)def display(self):self.listWidgetImages.setViewMode(QListView.IconMode)self.listWidgetImages.setModelColumn(1)self.listWidgetImages.itemSelectionChanged.connect(self.onItemSelectionChanged)# sliderself.sliderScale.valueChanged.connect(self.onSliderPosChanged)for i in range(100):image = cv2.imread('plmm.jpg')self.add_image_thumbnail(image,"圖片",str(i))def add_image_thumbnail(self, image, frameIdx, name):self.listWidgetImages.itemSelectionChanged.disconnect(self.onItemSelectionChanged)height, width, channels = image.shapeprint(image.shape)bytes_per_line = width * channelsprint(bytes_per_line)qImage = QImage(image.data, width, height, bytes_per_line, QImage.Format_RGB888).rgbSwapped()pixmap = QPixmap.fromImage(qImage)item = QListWidgetItem(QIcon(pixmap), str(frameIdx) + ": " + name)item.setData(FrameIdxRole, frameIdx)self.listWidgetImages.addItem(item)# to bottom# self.listWidgetImages.scrollToBottom()self.listWidgetImages.setCurrentRow(self.listWidgetImages.count() - 1)print('\033[32;0m --- add image thumbnail: {}, {} -------'.format(frameIdx, name))self.listWidgetImages.itemSelectionChanged.connect(self.onItemSelectionChanged)# self.listWidgetImages.itdef resizeEvent(self, event):width = self.listWidgetImages.contentsRect().width()self.sliderScale.setMaximum(width)self.sliderScale.setValue(width - 40)def onItemSelectionChanged(self):passdef onSliderPosChanged(self, value):self.listWidgetImages.setIconSize(QSize(value, value))if __name__ == "__main__":# 固定的,PyQt5程序都需要QApplication對象。sys.argv是命令行參數列表,確保程序可以雙擊運行app = QApplication(sys.argv)# 初始化myWin = MyMainForm()# 將窗口控件顯示在屏幕上myWin.show()# 程序運行,sys.exit方法確保程序完整退出。sys.exit(app.exec_())總結
以上是生活随笔為你收集整理的QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用手机或电脑远程连接windows自带
- 下一篇: 基于OpenCV的跳一跳外挂实现原理