本文整理汇总了Python中PyQt4.QtSql.QSqlTableModel.setEditStrategy方法的典型用法代码示例。如果您正苦于以下问题:Python QSqlTableModel.setEditStrategy方法的具体用法?Python QSqlTableModel.setEditStrategy怎么用?Python QSqlTableModel.setEditStrategy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt4.QtSql.QSqlTableModel
的用法示例。
在下文中一共展示了QSqlTableModel.setEditStrategy方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: set_model_to_table
# 需要导入模块: from PyQt4.QtSql import QSqlTableModel [as 别名]
# 或者: from PyQt4.QtSql.QSqlTableModel import setEditStrategy [as 别名]
def set_model_to_table(self, widget, table_name, filter_):
''' Set a model with selected filter.
Attach that model to selected table '''
# Set model
model = QSqlTableModel();
model.setTable(table_name)
model.setEditStrategy(QSqlTableModel.OnManualSubmit)
model.setFilter(filter_)
model.select()
# Check for errors
if model.lastError().isValid():
self.controller.show_warning(model.lastError().text())
# Attach model to table view
widget.setModel(model)
示例2: showTable
# 需要导入模块: from PyQt4.QtSql import QSqlTableModel [as 别名]
# 或者: from PyQt4.QtSql.QSqlTableModel import setEditStrategy [as 别名]
def showTable(self, table):
"""
Public slot to show the contents of a table.
@param table name of the table to be shown (string or QString)
"""
model = QSqlTableModel(self.table, self.connections.currentDatabase())
model.setEditStrategy(QSqlTableModel.OnRowChange)
model.setTable(table)
model.select()
if model.lastError().type() != QSqlError.NoError:
self.emit(SIGNAL("statusMessage(QString)"), model.lastError().text())
self.table.setModel(model)
self.table.setEditTriggers(
QAbstractItemView.DoubleClicked | QAbstractItemView.EditKeyPressed)
self.table.resizeColumnsToContents()
self.connect(self.table.selectionModel(),
SIGNAL("currentRowChanged(QModelIndex, QModelIndex)"),
self.updateActions)
self.updateActions()
示例3: QuestionDlg
# 需要导入模块: from PyQt4.QtSql import QSqlTableModel [as 别名]
# 或者: from PyQt4.QtSql.QSqlTableModel import setEditStrategy [as 别名]
#.........这里部分代码省略.........
self.StudentModel.select()
self.g_curClassName = classname
self.tabWidget.setTabText(0, self.g_curClassName)
def dbclick2(self, indx):
if indx.column() == 2:
self.StudentView.setEditTriggers(QAbstractItemView.NoEditTriggers)
else:
self.StudentView.setEditTriggers(QAbstractItemView.DoubleClicked)
def genTwoTab(self, tabtitle=""):
# Create the tab title sytle.
tabtitle = QLabel()
tabtitle.setFont(QFont('Courier New', 20))
tabtitle.setText("班级学生信息管理")
tabtitle.setStyleSheet("border: 1px solid blue; color:rgba(0,0,255, 220);\
background-color:rgba(201,201,201,60);\
border-radius: 6px; \
padding: 1px 18px 1px 20px;\
min-width: 8em;")
tabtitle.setMinimumHeight(50);
titleLayout = QHBoxLayout()
titleLayout.addWidget(tabtitle)
titleLayout.setAlignment(tabtitle, Qt.AlignCenter)
# Create the classnameView
self.ClassnameView = QTableView()
self.ClassnameModel = QSqlTableModel(self.ClassnameView)
self.ClassnameModel.setTable("classtable")
# self.ClassnameModel.setRelation(2, QSqlRelation("mentalmodel", "id", "name"));
self.ClassnameModel.setEditStrategy(QSqlTableModel.OnManualSubmit)
self.ClassnameModel.select()
self.ClassnameModel.setHeaderData(0, Qt.Horizontal, "班级名称")
# for indx, iheader in enumerate(["classid", "classname"]):
# self.ClassnameModel.setHeaderData(indx+1, Qt.Horizontal, iheader)
self.ClassnameView.setModel(self.ClassnameModel)
# self.ClassnameView.setColumnHidden(0, True)
# self.ClassnameView.show()
self.ClassnameView.verticalHeader().setFixedWidth(30)
self.ClassnameView.verticalHeader().setStyleSheet("color: red;font-size:20px; ");
self.ClassnameView.setStyleSheet("QTableView{background-color: rgb(250, 250, 200, 0);"
"alternate-background-color: rgb(141, 163, 0);}"
"QTableView::item:hover {background-color: rgba(100,200,220,100);} ")
self.ClassnameView.setStyleSheet("font-size:16px; ");
self.ClassnameView.setSelectionMode(QAbstractItemView.SingleSelection)
# self.ClassnameView.dataChanged.connect(self.dataChanged)
# self.ClassnameView.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
# the second list
self.StudentView = QTableView()
self.StudentModel = QSqlTableModel(self.StudentView)
self.StudentModel.setTable("student")
# self.StudentModel.setRelation(2, QSqlRelation("mentalmodel", "id", "name"));
self.StudentModel.setEditStrategy(QSqlTableModel.OnManualSubmit)
# self.StudentModel.select()
query = QSqlQuery(self.db)
strwhere = " 1=1 "
if self.g_curClassName == "":
示例4: PlayerList
# 需要导入模块: from PyQt4.QtSql import QSqlTableModel [as 别名]
# 或者: from PyQt4.QtSql.QSqlTableModel import setEditStrategy [as 别名]
class PlayerList(QDialog):
"""QtSQL Model view of the players"""
def __init__(self, parent):
QDialog.__init__(self)
self.parent = parent
self.model = QSqlTableModel(self, DBHandle.default)
self.model.setEditStrategy(QSqlTableModel.OnManualSubmit)
self.model.setTable("player")
self.model.setSort(1, 0)
self.model.setHeaderData(1, Qt.Horizontal, QVariant(m18nc("Player", "Name")))
self.model.setFilter('name not like "ROBOT %" and name not like "Robot %"')
self.view = MJTableView(self)
self.view.verticalHeader().show()
self.view.setModel(self.model)
self.view.hideColumn(0)
self.buttonBox = QDialogButtonBox()
self.buttonBox.setStandardButtons(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.newButton = self.buttonBox.addButton(m18nc('define a new player', "&New"), QDialogButtonBox.ActionRole)
self.newButton.setIcon(KIcon("document-new"))
self.newButton.clicked.connect(self.slotInsert)
self.deleteButton = self.buttonBox.addButton(m18n("&Delete"), QDialogButtonBox.ActionRole)
self.deleteButton.setIcon(KIcon("edit-delete"))
self.deleteButton.clicked.connect(self.delete)
cmdLayout = QHBoxLayout()
cmdLayout.addWidget(self.buttonBox)
layout = QVBoxLayout()
layout.addWidget(self.view)
layout.addLayout(cmdLayout)
self.setLayout(layout)
self.setWindowTitle(m18n("Players") + ' - Kajongg')
self.setObjectName('Players')
def showEvent(self, dummyEvent):
"""adapt view to content"""
if not self.model.select():
logError("PlayerList: select failed")
sys.exit(1)
self.view.initView()
StateSaver(self, self.view.horizontalHeader())
if not self.view.isColumnHidden(2):
# we loaded a kajonggrc written by an older kajongg version where this table
# still had more columns. This should happen only once.
self.view.hideColumn(2)
self.view.hideColumn(3)
def accept(self):
"""commit all modifications"""
self.view.selectRow(0) # if ALT-O is entered while editing a new row, this is one way
# to end editing and to pass the new value to the model
if not self.model.submitAll():
Sorry(m18n('Cannot save this. Possibly the name already exists. <br><br>' \
'Message from database:<br><br><message>%1</message>',
self.model.lastError().text()))
return
QDialog.accept(self)
def slotInsert(self):
"""insert a record"""
self.model.insertRow(self.model.rowCount())
self.view.selectRow(self.model.rowCount()-1)
def delete(self):
"""delete selected entries"""
sel = self.view.selectionModel()
maxDel = self.view.currentIndex().row() - 1
for idx in sel.selectedIndexes():
if idx.column() != 1:
continue
# sqlite3 does not enforce referential integrity.
# we could add a trigger to sqlite3 but if it raises an exception
# it will be thrown away silently.
# if anybody knows how to propagate sqlite3 exceptions via QtSql
# into python please tell me (wrohdewald)
player = self.model.createIndex(idx.row(), 0).data().toInt()[0]
# no query preparation, we don't expect lots of data
if Query("select 1 from game where p0==%d or p1==%d or p2==%d or p3==%d" % \
(player, player, player, player)).records:
Sorry(m18n('This player cannot be deleted. There are games associated with %1.',
idx.data().toString()))
else:
self.model.removeRow(idx.row())
maxDel = max(maxDel, idx.row())
self.view.selectRow(maxDel+1)
def keyPressEvent(self, event):
"""use insert/delete keys for insert/delete"""
key = event.key()
if key == Qt.Key_Insert:
self.slotInsert()
return
QDialog.keyPressEvent(self, event)
示例5: FilterDialog
# 需要导入模块: from PyQt4.QtSql import QSqlTableModel [as 别名]
# 或者: from PyQt4.QtSql.QSqlTableModel import setEditStrategy [as 别名]
class FilterDialog(QDialog, filterdialog_ui.Ui_FilterDialog):
def __init__(self, header=None, db=None, parent=None):
super(FilterDialog, self).__init__(parent)
self.setupUi(self)
self.dbi = ""
if not db:
filename = ":memory:"
self.dbi = QSqlDatabase.addDatabase("QSQLITE")
self.dbi.setDatabaseName(filename)
self.dbi.open()
self.creaStrutturaDB(header)
self.sModel = QSqlTableModel(self)
self.sModel.setTable(QString("filtertable"))
self.sModel.setEditStrategy(QSqlTableModel.OnManualSubmit)
self.sModel.select()
self.filterTableView.setModel(self.sModel)
self.filterTableView.setColumnHidden(0, True)
self.filterTableView.setAlternatingRowColors(True)
self.connect(self.sModel, SIGNAL("primeInsert (int,QSqlRecord&)"),
self.updRows)
self.connect(self.addFilterPushButton, SIGNAL("clicked()"),
self.accept)
self.connect(self.addLinePushButton, SIGNAL("clicked()"),
self.addLine)
self.sModel.insertRows(0, 10)
self.sModel.submitAll()
self.restoreSettings()
self.resultFilter = None
def accept(self):
rows = self.sModel.rowCount()
cols = self.sModel.columnCount()
model = self.sModel
mlqry = dict()
qry = None
for r in range(rows):
record = model.record(r)
for c in range(1, cols):
if record.value(c).toString():
if not qry:
qry = "("
elif c > 1 and qry :
qry = "%s AND" % qry
qry = "%s %s %s" % (qry, record.fieldName(c),
record.value(c).toString())
if qry :
mlqry[r] = "%s )" % qry
qry = ""
for q in mlqry.keys():
if not qry:
qry = mlqry[q]
continue
qry = "%s OR %s" % (qry, mlqry[q])
self.resultFilter = qry
query = QSqlQuery()
query.exec_("DROP TABLE filtertable")
if self.dbi:
del self.dbi
QDialog.accept(self)
def addLine(self):
row = self.sModel.rowCount()
self.sModel.insertRows(row, 1)
self.sModel.submitAll()
def updRows(self, row, record):
totcolumn = record.count()
for i in range(1, totcolumn):
record.setValue(i, QVariant(""))
def creaStrutturaDB(self, header=None):
if not header:
sys.exit(1)
query = QSqlQuery()
query.exec_("DROP TABLE filtertable")
qry = """CREATE TABLE filtertable (
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL
"""
for column in header:
qry += ", %s" % column
qry += " )"
if not query.exec_(qry):
QMessageBox.warning(None, "FilterTable",
QString("Creazione tabella fallita!"))
sys.exit(1)
def restoreSettings(self):
settings = QSettings(QString(FILTERDLGORG),
QString(FILTERDLGAPP))
self.restoreGeometry(
#.........这里部分代码省略.........
示例6: MainWindow
# 需要导入模块: from PyQt4.QtSql import QSqlTableModel [as 别名]
# 或者: from PyQt4.QtSql.QSqlTableModel import setEditStrategy [as 别名]
#.........这里部分代码省略.........
if event.key() == Qt.Key_Down:
self.addDettRecord()
else:
QMainWindow.keyPressEvent(self, event)
def closeEvent(self, event):
self.mapper.submit()
settings = QSettings()
settings.setValue("MainWindow/Geometry", QVariant(
self.saveGeometry()))
if self.filename is not None:
settings.setValue("Settings/lastFile", QVariant(self.filename))
if self.db.isOpen():
# salva larghezza colonne tabella
for column in range(1, self.sModel.columnCount()-1):
width = self.sTableView.columnWidth(column)
if width:
settings.setValue("Settings/sTableView/%s" % column,
QVariant(width))
self.db.close()
del self.db
def setupModels(self):
"""
Initialize all the application models
"""
# setup slaveModel
self.sModel = QSqlTableModel(self)
self.sModel.setTable(QString("ddtslave"))
self.sModel.setHeaderData(SID, Qt.Horizontal, QVariant("ID"))
self.sModel.setHeaderData(SQT, Qt.Horizontal, QVariant("Qt"))
self.sModel.setHeaderData(SDESC, Qt.Horizontal, QVariant("Descrizione"))
self.sModel.setHeaderData(SMID, Qt.Horizontal, QVariant("idlegato"))
self.sModel.setEditStrategy(QSqlTableModel.OnRowChange)
self.sModel.select()
# setup masterModel
self.mModel = QSqlRelationalTableModel(self)
self.mModel.setTable(QString("ddtmaster"))
self.mModel.setSort(MDATA, Qt.AscendingOrder)
self.mModel.setRelation(MIDCLI, QSqlRelation("clienti",
"id", "ragsoc"))
self.mModel.select()
def setupMappers(self):
'''
Initialize all the application mappers
'''
self.mapper = QDataWidgetMapper(self)
self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)
self.mapper.setModel(self.mModel)
self.mapper.setItemDelegate(QSqlRelationalDelegate(self))
self.mapper.addMapping(self.dateEdit, MDATA)
self.mapper.addMapping(self.ddtLineEdit, MDDT)
relationModel = self.mModel.relationModel(MIDCLI)
relationModel.setSort(CRAGSOC, Qt.AscendingOrder)
relationModel.select()
self.cliComboBox.setModel(relationModel)
self.cliComboBox.setModelColumn(relationModel.fieldIndex("ragsoc"))
self.mapper.addMapping(self.cliComboBox, MIDCLI)
self.mapper.addMapping(self.cauLineEdit, MCAU)
self.mapper.addMapping(self.noteLineEdit, MNOTE)
self.mapper.toFirst()
def setupTables(self):
"""