第8章Qt5模型-视图结构汇编.pptVIP

  • 14
  • 0
  • 约1.53万字
  • 约 42页
  • 2016-08-01 发布于湖北
  • 举报
8.4 代理(Delegate) setEditorData()函数的具体代码如下: void DateDelegate::setEditorData(QWidget *editor, const QModelIndex index) const { QString dateStr= index.model()-data(index).toString(); //(a) QDate date = QDate::fromString(dateStr,Qt::ISODate); //(b) QDateTimeEdit *edit=static_castQDateTimeEdit*(editor); //(c) edit-setDate(date); //设置控件的显示数据 } 8.4 代理(Delegate) setModelData()函数的具体代码如下: void DateDelegate::setModelData(QWidget *editor,QAbstractItemModel *model, const QModelIndex index) const { QDateTimeEdit *edit=static_castQDateTimeEdit*(editor);//(a) QDate date = edit-date(); //(b) model-setData(index,QVariant(date.toString(Qt::ISODate)));//(c) } updateEditorGeometry()函数的具体代码如下: void DateDelegate::updateEditorGeometry(QWidget *editor,const QStyle OptionViewItem option,const QModelIndex index) const { editor-setGeometry(option.rect); } 8.4 代理(Delegate) (6)在“main.cpp”文件中添加如下代码: #include datedelegate.h 在语句tableView.setModel(model);后面添加如下代码: DateDelegate dateDelegate; tableView.setItemDelegateForColumn(1,dateDelegate); (7)此时运行程序,双击第1行第2列,将显示如图8.9所示的日历编辑框控件。 8.4 代理(Delegate) 下面使用下拉列表框QComboBox控件实现对职业类型的输入编辑,使用自定义的Delegate实现。 (1)ComboDelegate继承自QItemDelegate类。 头文件“combodelegate.h”中的具体代码如下: #include QItemDelegate class ComboDelegate : public QItemDelegate { Q_OBJECT public: ComboDelegate(QObject *parent = 0); QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem option, const QModelIndex index) const; void setEditorData(QWidget *editor, const QModelIndex index) const; void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex index) const; void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem option, const QModelIndex index) const; }; 8.4 代理(Delegate) (2)源文件“combodelegate.cpp”中的具体代码如下: #include combodelegate.h #include QComboBox ComboDelegate::ComboDelegate(QObject *parent) : QItemDelegate(parent) { } 8.4 代理(Delegate) createEditor()函数中创建了一个QComb

文档评论(0)

1亿VIP精品文档

相关文档