Clase QStringListModel

1. Clase principal:
QStringListModel

(1) Función: maneja el modelo de datos de la lista de cadenas, que se puede utilizar como modelo de datos de QListView para mostrar y editar la lista de cadenas en la interfaz.

2. Funciones principales:
setStringList()
(1) Función: Inicializar el contenido de la lista de cadenas del modelo de datos.
(2) Parámetros: Ninguno.
stringList()
(1) Función: Obtener la lista de cadenas en el modelo de datos.
(2) Parámetros: Ninguno.
insertRow(fila)
(1) Función: Insertar una fila antes de la fila. Para insertar una fila al final de la lista, establezca el parámetro fila en el número de fila actual de la lista.
(2) Parámetros: la fila representa el índice del número de fila
(fila, columna, elemento principal)
(1) Función: generar un índice de modelo de acuerdo con el número de fila, el número de columna o el índice de modelo pasados ​​del elemento principal
(2) Parámetros: fila número, número de columna y elemento principal
currentIndex()
(1) Función: Devuelve el índice del modelo del elemento actual
(2) Parámetros: Ninguno.
removeRow(index)
(1) función: eliminar el elemento actual
(2) parámetro: índice indica el índice del modelo actual
removeRows(row,count)
(1) función: eliminar el recuento de filas comenzando desde el número de fila fila
(2) parámetro: fila indica el número de fila; recuento indica el número de filas eliminadas
setData(index,content,userRole)
(1) Función: establece el título del texto para el elemento
(2) Parámetros: index indica el índice del modelo; content indica el contenido del texto título; userRole indica la función de los datos enumerados
setEditTriggers()
(1) Función: establece si el elemento de QListView se puede editar y cómo ingresar al estado de edición.
(2) Parámetros: combinación de tipos de enumeración QAbstractItemView.EditTrigger
como QAbstractItemView.DoubleClicked: haga doble clic en el elemento de la lista para ingresar al estado de edición; QAbstractItemView.SelectedClicked: haga clic en el elemento de la lista para ingresar al estado de edición; QAbstractItemView.NoEditTriggers: no editable

3. Inicialización de componentes y objetos de estructura de modelo/vista:
la siguiente demostración se crea en función de la plantilla del proyecto widgetApp, principalmente el código del constructor QmyWidget de la clase de lógica de negocios del formulario, donde ui_Widget.py se usa para compilar la interfaz de visualización del proyecto, que no está incluido en este artículo. Pon el código.
El uso de QListView y QStringListModel

import sys
from PyQt5.QtWidgets import  QApplication, QWidget,QAbstractItemView
from PyQt5.QtCore import  pyqtSlot, QStringListModel, Qt, QModelIndex
from ui_Widget import Ui_Widget

class QmyWidget(QWidget): 
   def __init__(self, parent=None):
      super().__init__(parent)   #调用父类构造函数,创建窗体
      self.ui=Ui_Widget()        #创建UI对象
      self.ui.setupUi(self)      #构造UI界面
	
	##先定义一个省份的字符串列表
      self.__provinces=["北京","上海","天津","河北",
                       "山东","四川","重庆","广东","河南"]
   
   ##定义一个数据类型为QStringListModel
      self.model=QStringListModel(self)
   
   ##将字符串列表的内容初始化为数据模型的数据内容
      self.model.setStringList(self.__provinces)
   
   ##视图组件设置关联一个数据类型
      self.ui.listView.setModel(self.model)
      self.ui.listView.setEditTriggers(QAbstractItemView.DoubleClicked | 
      QAbstractItemView.SelectedClicked)

Después de dicha inicialización, el componente listView en la interfaz mostrará el contenido de la lista de cadenas inicializadas.

4. Operación de control:
(1) Agregar elemento: agrega una línea al final de la lista;
(2) Insertar elemento: inserta una línea antes de la línea actual en la lista

##  =================自定义功能函数=================================
        
##  ==========由connectSlotsByName() 自动连接的槽函数===============        
   @pyqtSlot()    ##重设模型数据内容
   def on_btnList_Reset_clicked(self):   
      self.model.setStringList(self.__provinces); 

   @pyqtSlot()  ##添加项
   def on_btnList_Append_clicked(self):   
      lastRow=self.model.rowCount()
      self.model.insertRow(lastRow)   #在尾部插入一空行
      index=self.model.index(lastRow,0)  #获取最后一行的ModelIndex
      self.model.setData(index,"new item",Qt.DisplayRole) #设置显示文字
      self.ui.listView.setCurrentIndex(index)  #设置当前选中的行

   @pyqtSlot()    ##插入项
   def on_btnList_Insert_clicked(self):   
      index=self.ui.listView.currentIndex()   #当前 modelIndex
      self.model.insertRow(index.row())
      self.model.setData(index,"inserted item", Qt.DisplayRole)  #设置显示文字
      ##        self.model.setData(index,Qt.AlignRight, Qt.TextAlignmentRole) #设置对齐方式,不起作用
      self.ui.listView.setCurrentIndex(index) #设置当前选中的行


   @pyqtSlot()  ##删除当前项
   def on_btnList_Delete_clicked(self):   
      index=self.ui.listView.currentIndex() #获取当前 modelIndex
      self.model.removeRow(index.row()); #删除当前行
        
   @pyqtSlot()    ##清空列表
   def on_btnList_Clear_clicked(self): 
      count=self.model.rowCount()
      self.model.removeRows(0,count)

   @pyqtSlot()    ##清空文本
   def on_btnText_Clear_clicked(self):
      self.ui.plainTextEdit.clear()

   @pyqtSlot()    ##显示数据模型的内容
   def on_btnText_Display_clicked(self):  
      strList=self.model.stringList()  #列表类型
      self.ui.plainTextEdit.clear()
      for strLine in strList:
         self.ui.plainTextEdit.appendPlainText(strLine)

   def on_listView_clicked(self,index):
      self.ui.LabInfo.setText("当前项index: row=%d, column=%d"
                             %(index.row(),index.column()))

Supongo que te gusta

Origin blog.csdn.net/qq_35412059/article/details/126068079
Recomendado
Clasificación