Tema: QTreeView =)
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/03/2011, 06:40
virousa
 
Fecha de Ingreso: enero-2011
Mensajes: 32
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: QTreeView =)

Bien!!!
he aqui una muestra de mi codigo....
pues creo que lo que ud me esta mostrando ya lo tengo hecho =)
Quiza no me explique bien.....



Código Python:
Ver original
  1. from PyQt4 import QtCore, QtGui
  2. from PyQt4.QtCore import SIGNAL, Qt, QString, QSignalMapper, SIGNAL, SLOT
  3. from PyQt4.QtGui import QWidget, QSortFilterProxyModel, \
  4.     QAbstractItemView, QMenu, QStandardItemModel
  5. from Proyect.presentation.view.ui_Groups import Ui_Groups
  6. from Proyect.presentation.model.standard_model import StandardModel
  7. from Proyect.presentation.config.tree_menu import ElementType, tree_menu
  8.  
  9. class Groups(QWidget):
  10.     '''
  11.    classdocs
  12.    '''
  13.  
  14.     def __init__(self, parent=None, flags=0):
  15.         '''
  16.        Constructor
  17.        '''
  18.         QWidget.__init__(self)
  19.         self.ui = Ui_Groups()
  20.         self.ui.setupUi(self)
  21.        
  22.         if parent is not None:
  23.             self.setParent(parent)
  24.        
  25.         self.model = None
  26.  
  27.         self.og_domain = None
  28.         self.menu = None
  29.        
  30.         self.menu_signal = None
  31.         self.sort_model = None
  32.                
  33.         self.load_component()
  34.         self.load_connection()
  35.        
  36.     def load_connection(self):
  37.         '''
  38.        '''
  39.         self.connect(self.ui.btn_add, SIGNAL("clicked()"), self.new_row)
  40.         self.connect(self.ui.btn_delete, SIGNAL("clicked()"), self.delete_row)
  41.         self.connect(self.ui.btn_cancel, SIGNAL("clicked()"), self.cancel)
  42.         self.connect(self.ui.btn_save, SIGNAL("clicked()"), self.save)
  43.        
  44.         ""
  45.         self.connect(self.ui.tree_view, SIGNAL("customContextMenuRequested(const QPoint &)"), self.show_menu)
  46.        
  47.     def load_component(self):
  48.        
  49.         '''
  50.        Modelo del Arbol
  51.        '''
  52.         self.model = StandardModel()
  53.         self.model.setRowCount(1)
  54.        
  55.         headers = [self.trUtf8("Grupos"), self.trUtf8("Descripción")]
  56.        
  57.         self.model.setHorizontalHeaderLabels(headers)
  58.        
  59.         self.sort_model = QSortFilterProxyModel()
  60.         self.sort_model.setSourceModel(self.model)
  61.        
  62.         self.ui.table_view.setModel(self.sort_model)
  63.         self.ui.table_view.resizeColumnsToContents()
  64.         self.ui.table_view.setSelectionBehavior(QAbstractItemView.SelectRows)
  65.         self.ui.table_view.setSortingEnabled(True)
  66.        
  67.         i = 0
  68.         while i < 2:
  69.             self.ui.table_view.setColumnHidden(i, True)
  70.             i += 1
  71.         self.ui.tree_view.setModel(self.sort_model)
  72.         self.ui.tree_view.setSortingEnabled(True)
  73.         self.ui.tree_view.setContextMenuPolicy(Qt.CustomContextMenu)
  74.          
  75.         '''
  76.        Modelo de la tabla
  77.        '''
  78.        
  79.         self.modelo = StandardModel()
  80.         self.modelo.setRowCount(1)
  81.        
  82.         headers1 = [  "Grupo", "       Usuario         ","    Nombre y Apellido         ",self.trUtf8("Identificación")]
  83.         self.modelo.setHorizontalHeaderLabels(headers1)
  84.        
  85.         self.sort_model = QSortFilterProxyModel()
  86.         self.sort_model.setSourceModel(self.modelo)
  87.        
  88.         self.ui.table_view.setModel(self.sort_model)
  89.         self.ui.table_view.resizeColumnsToContents()
  90.         self.ui.table_view.setSelectionMode(QAbstractItemView.SingleSelection)
  91.         self.ui.table_view.setSelectionBehavior(QAbstractItemView.SelectRows)
  92.         self.ui.table_view.setSortingEnabled(True)
  93.  
  94.  
  95.         i = 5
  96.         while i < len(headers):
  97.             self.ui.table_view.setColumnHidden(i, True)
  98.             i += 1
  99.            
  100.         self.ui.table_view.setModel(self.sort_model)
  101.         self.ui.table_view.setSortingEnabled(True)
  102.         self.ui.table_view.setContextMenuPolicy(Qt.CustomContextMenu)
  103.    
  104.          
  105.            
  106.     def insertChild(self):  #Funcion que permite crear los pozos
  107.         index = self.ui.tree_view.selectionModel().currentIndex()
  108.         model = self.ui.tree_view.model()
  109.  
  110.         if model.columnCount(index) == 0:
  111.            
  112.             if not model.insertColumn(0, index):
  113.                
  114.                 return
  115.  
  116.         if not model.insertRow(0, index):
  117.             return
  118.  
  119.         for column in range(model.columnCount(index)):
  120.             child = model.index(0, column, index)
  121.             model.setData(child, "[No data]", QtCore.Qt.EditRole)
  122.            
  123.             if model.headerData(column, QtCore.Qt.Horizontal) is None:
  124.                 model.setHeaderData(column, QtCore.Qt.Horizontal,
  125.                         "[No header]", QtCore.Qt.EditRole)
  126.  
  127.         self.ui.tree_view.selectionModel().setCurrentIndex(model.index(0, 0, index),
  128.                 QtGui.QItemSelectionModel.ClearAndSelect)
  129.    
  130.     def new_row(self):  #Funcion que permite insetar nueva fila
  131.         '''
  132.        '''
  133.         self.model.setRowCount(self.model.rowCount() + 1)
  134.  
  135.     def delete_row(self):
  136.         '''
  137.        '''
  138.         if len(self.ui.table_view.selectedIndexes()) == 0:
  139.             return
  140.  
  141.         index = self.ui.table_view.selectedIndexes() [0]
  142.         row  = self.sort_model.mapToSource (index).row ()
  143.        
  144.  
  145.         self.model.takeRow(row)
  146.        
  147.            
  148.     def save(self):
  149.         '''
  150.        '''
  151.         pass
  152.    
  153.     def cancel(self):
  154.         '''
  155.        '''
  156.         self.close()
  157.        
  158.     def show_menu(self, point):
  159.         '''
  160.        '''
  161.    
  162.         level = 0
  163.         self.menu_signal = QSignalMapper()
  164.        
  165.         index = self.ui.tree_view.selectedIndexes()
  166.         if len(index) > 0:
  167.             level = 0
  168.             indexe = index[0]
  169.            
  170.             while indexe.parent().isValid():
  171.                 indexe = indexe.parent()
  172.                 level +=1
  173.        
  174.             self.menu = QMenu()
  175.             if level == 0:
  176.                 if len(index) > 0:
  177.                     level = self.model.level(index[0])
  178.                
  179.                 for x in tree_menu[level].keys():
  180.                     action = self.menu.addAction(self.trUtf8(x))
  181.                     self.menu_signal.setMapping(action, tree_menu[level][x])
  182.                     self.connect(action, SIGNAL("triggered()"), self.menu_signal, SLOT("map()"))    
  183.                
  184. #            elif level == 1:
  185. #                if len(index) > 1:
  186. #                    level = self.model.level(index[0])
  187. #                
  188. #                for x in tree_menu[level+1].keys():
  189. #                    action = self.menu.addAction(self.trUtf8(x))
  190. #                    self.menu_signal.setMapping(action, tree_menu[level+1][x])
  191. #                    self.connect(action, SIGNAL("triggered()"), self.menu_signal, SLOT("map()"))
  192.                
  193.                
  194.             elif level == 2:
  195.                 if len(index) > 0:
  196.                     level = self.model.level(index[0])
  197.                
  198.                 for x in tree_menu[level+2].keys():
  199.                     action = self.menu.addAction(self.trUtf8(x))
  200.                     self.menu_signal.setMapping(action, tree_menu[level+2][x])
  201.                     self.connect(action, SIGNAL("triggered()"), self.menu_signal, SLOT("map()"))
  202.  
  203.  
  204.  
  205.  
  206.             self.connect(self.menu_signal, SIGNAL("mapped(int)"), self.actions)
  207.        
  208.             self.menu.exec_(self.ui.tree_view.viewport().mapToGlobal(point))
  209.        
  210.        
  211.     def actions(self, action):
  212.         '''
  213.        '''
  214.        
  215.         if action == ElementType.ADD_G:
  216.            
  217.             self.new_row()  #Llamado a funcion que crea un nuevo grupo de ajuste
  218.             print "Add G"
  219.        
  220.         if action == ElementType.EDIT_G:
  221.             #self.new_row()
  222.             print "Edit G"
  223.         if action == ElementType.DELETE_G:
  224.             print "Delete G"
  225.            
  226.         if action == ElementType.ADD_USR:
  227.             self.insertChild()
  228.             print "Add User"
  229.      
  230.         if action == ElementType.EDIT_USR:
  231.             print "Edit User"
  232.         #self.insertChild()
  233.         if action == ElementType.DELETE_USR:
  234.             print "Delete User"


Este es el codigo que hasta ahora tengo.....
y lo que necesito es que en el primer nivel de mi TreeView se muestre un nombre predefinido....
Gracias....

Nota: creo que se hace necesario recalcar el hecho de que en este codigo hay lineas que realmente no son necesarias (o lo son para mi proyecto) pero que surgen de otros archivos externos como se puede visualizar en los imports.....
La ACLARATORIA es para terceros que pudiesen necesitar hacer uso de alguna de las lineas que aca se muestran...

Última edición por AlvaroG; 10/03/2011 a las 09:18 Razón: coloreado de codigo