Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/03/2012, 12:27
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Python 3 + PyQt4 ¿Propiedad NoEditTriggers para una sola columna?

Primero que nada, no pongas mensajes solo para subir la popularidad del post.
Segundo, si no te responden es por que no has puesto ni siquiera un código que se pueda ejecutar y ver cual es el error.

Después de investigar un poco, leer la documentación y de mas resulto ser muy sencillo.

Código Python:
Ver original
  1. from PyQt4.QtCore import *
  2. from PyQt4.QtGui import *
  3. from PyQt4.QtSql import *
  4. import sys
  5. import os
  6.  
  7. class MainForm(QDialog):
  8.  
  9.     def __init__(self):
  10.         super(MainForm, self).__init__()
  11.  
  12.         self.assetModel = QSqlTableModel(self)
  13.         self.assetModel.flags = self.flags
  14.         self.assetModel.setEditStrategy(QSqlTableModel.OnRowChange)      
  15.         self.assetModel.setTable("testing")
  16.                
  17.         self.assetModel.select()
  18.         self.assetView = QTableView()
  19.        
  20.         self.assetView.setModel(self.assetModel)
  21.         self.assetView.setSelectionMode(QTableView.SingleSelection)
  22.         self.assetView.setSelectionBehavior(QTableView.SelectRows)
  23.        
  24.         dataLayout = QVBoxLayout()    
  25.         dataLayout.addWidget(self.assetView, 1)
  26.         layout = QHBoxLayout()
  27.         layout.addLayout(dataLayout, 1)
  28.         self.setLayout(layout)
  29.  
  30.         self.setWindowTitle("Asset Manager")
  31.        
  32.     def flags(self, idx):
  33.         baseflags = QAbstractTableModel.flags(self.assetModel, idx)
  34.         if idx.column() == 1:
  35.             return baseflags | Qt.ItemIsEditable
  36.         else:
  37.             return baseflags
  38.  
  39.  
  40. if __name__ == '__main__':
  41.  
  42.     app = QApplication(sys.argv)
  43.  
  44.     filename = os.path.join(os.path.dirname(__file__), "test.db")
  45.     create = not QFile.exists(filename)
  46.     db = QSqlDatabase.addDatabase("QSQLITE")
  47.     db.setDatabaseName(filename)
  48.     if not db.open():
  49.         QMessageBox.warning(None, "Asset Manager",
  50.             QString("Database Error: %1").arg(db.lastError().text()))
  51.         sys.exit(1)
  52.  
  53.    
  54.     print "Creating table..."
  55.     query = QSqlQuery()
  56.     r = query.exec_('drop table testing')
  57.     r = query.exec_("""CREATE TABLE testing (
  58.                id INTEGER,
  59.                value VARCHAR(20)
  60.                )""" )
  61.                
  62.     query.exec_("INSERT INTO testing (id, value) "
  63.                 "VALUES (1, '2')")
  64.     query.exec_("INSERT INTO testing (id, value) "
  65.                 "VALUES (3, '4')")
  66.  
  67.     m = MainForm()
  68.     m.show()
  69.    
  70.     app.exec_()
Básicamente es el link que te había pasado el mi primer respuesta.