Делегат pyqt4 dateedit не хочет отображать время
Я пытаюсь позволить своему пользователю выбрать дату и войти в базу данных с помощью виджета dateedit, и я делаю это с помощью делегата, но по какой-то причине он также прикрепляет время
class ProductDelegate(QtSql.QSqlRelationalDelegate):
def __init__(self):
super().__init__()
def createEditor(self, parent, option, index):
if index.column() == 3:
editor = QtGui.QDateEdit(parent)
now = QtCore.QDate.currentDate()
editor.setMinimumDate(now)
editor.setCalendarPopup(True)
return editor
else:
return QtSql.QSqlRelationalDelegate.createEditor(self, parent, option, index)
строка, оставленная после выбора даты, выглядит примерно так: "30.01.2015 00:00:00". Я не хочу, чтобы там было время? что это за работа?
1 ответ
Решение
Похоже, что вы, возможно, неправильно форматируете значения при настройке редактора и / или данных модели. Делегат, вероятно, должен выглядеть примерно так:
class ProductDelegate(QtSql.QSqlRelationalDelegate):
def createEditor(self, parent, option, index):
if index.column() == 3:
editor = QtGui.QDateEdit(parent)
now = QtCore.QDate.currentDate()
editor.setDisplayFormat('yyyy-MM-dd')
editor.setMinimumDate(now)
editor.setCalendarPopup(True)
return editor
return super(ProductDelegate, self).createEditor(parent, option, index)
def setEditorData(self, editor, index):
if index.column() == 3:
data = index.data()
if not isinstance(data, QtCore.QPyNullVariant):
editor.setDate(QtCore.QDate.fromString(data))
else:
super(ProductDelegate, self).setEditorData(editor, index)
def setModelData(self, editor, model, index):
if index.column() == 3:
value = editor.date().toString('yyyy-MM-dd')
model.setData(index, value, QtCore.Qt.EditRole)
else:
super(ProductDelegate, self).setModelData(editor, model, index)