日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)

發布時間:2023/12/14 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT 实现滚屏显示多张漂亮美眉图片(可放大缩小) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作為新手小白的一些分享。。。。。。。
其中一部分功能要求顯示多張圖片,如果圖片總高度超過工具窗口的高度就要有滾動條出現,實現滾屏的效果,網上這部分內容少之又少,我就把效果和代碼都貼出來供大家參考。

想看QT 實現滾屏顯示多張漂亮美眉片(可放大縮小),可以跳過第一種方式,直接看第二種方式。

我這里介紹兩種方式,首先一種簡單的方式,展示效果如下,實現QWidget的滾動條,在Qt Designer中,QScrollArea已經實現好的帶有滾動條的控件。

功能實現代碼如下,非常簡單。

import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import *class MainWindow(QMainWindow):def __init__(self,):super(QMainWindow,self).__init__()self.number = 0w = QWidget()self.setCentralWidget(w)self.topFiller = QWidget()self.topFiller.setMinimumSize(250, 2000)#######設置滾動條的尺寸lab1 = QLabel(self.topFiller)lab1.setPixmap(QPixmap('demo.jpg'))lab2 = QLabel(self.topFiller)lab2.setPixmap(QPixmap('demo.jpg'))lab2.move(0, 220)##創建一個滾動條self.scroll = QScrollArea()self.scroll.setWidget(self.topFiller)self.vbox = QVBoxLayout()self.vbox.addWidget(self.scroll)w.setLayout(self.vbox)self.statusBar().showMessage("底部信息欄")self.resize(600, 500)if __name__ == "__main__":app = QApplication(sys.argv)mainwindow = MainWindow()mainwindow.show()sys.exit(app.exec_())

第二種方式,用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 实现滚屏显示多张漂亮美眉图片(可放大缩小)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。