模型/视图编程与数据库操作:自定义委托与数据库访问
1. 自定义委托概述
在数据展示和编辑中,若要对数据项的呈现和编辑进行完全控制,就需要创建自定义委托。委托可单纯用于控制外观(如只读视图),或通过提供自定义编辑器来控制编辑,也可两者兼顾。
2. 自定义委托的使用场景与示例应用
以chap14/ships-delegate.pyw应用为例,它与ships-model.pyw几乎相同,区别在于窗口标题、列大小调整方式以及使用了自定义委托ShipDelegate(位于chap14/ships.py,需 PyQt 4.1 或更高版本)。
以下是创建第一个表格的代码示例:
class MainForm(QDialog): def __init__(self, parent=None): super(MainForm, self).__init__(parent) self.model = ships.ShipTableModel(QString("ships.dat")) tableLabel1 = QLabel("Table &1") self.tableView1 = QTableView() tableLabel1.setBuddy(self.tableView1) self.tableView1.setModel(self.mode