当前位置: 首页 > wzjs >正文

百度统计网站速度诊断多少关键词排名优化软件

百度统计网站速度诊断,多少关键词排名优化软件,苏州游玩攻略必去的地方,网站采编队伍建设QItemDelegate 当我们想重新实现一个代理时,可以子类化QItemDelegate。实现item编辑时特定的效果,比如在item编辑时我们设置一个QSpinBox返回。 创建一个QApplication项目,然后我们新增一个类,类名叫做spinboxdelegate。 class S…

QItemDelegate

当我们想重新实现一个代理时,可以子类化QItemDelegate。实现item编辑时特定的效果,比如在item编辑时我们设置一个QSpinBox返回。
创建一个QApplication项目,然后我们新增一个类,类名叫做spinboxdelegate。

class SpinBoxDelegate : public QItemDelegate
{Q_OBJECT
public:explicit SpinBoxDelegate(QObject * parent=0);QWidget * createEditor(QWidget* parent,   const QStyleOptionViewItem &option,const QModelIndex &index) const override;void setEditorData(QWidget *editor, const QModelIndex &index) const override;void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;void updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option,const QModelIndex &index) const override;
};

SpinBoxDelegate类中声明了几个函数,这些函数在QItemDelegate继承而来,通过重写实现我们自己定义的代理功能。
createEditor函数是在item被双击后进入编辑状态时触发的,返回一个QWidget控件用来管理编辑。
setModelData是在item被修改后触发的,将改动的内容写入model中。
setEditorData是在item被双击进入编辑状态时,将model的内容写入editor中。
updateEditorGeometry是刷新editor的矩形区域,因为随着item变大或者拉伸,它的区域也要随之刷新。

具体实现

1 创建editor, 返回一个spinbox

QWidget * SpinBoxDelegate::createEditor(QWidget* parent,   const QStyleOptionViewItem &option,const QModelIndex &index) const{QSpinBox * editor = new QSpinBox(parent);editor->setMinimum(0);editor->setMaximum(100);return editor;
}

2 在编辑状态时,将model的数据写入editor

void SpinBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const {int value = index.model()->data(index, Qt::EditRole).toInt();QSpinBox * spinBox = static_cast<QSpinBox*>(editor);spinBox->setValue(value);
}

3 编辑完成时将editor的内容写入model

void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const {QSpinBox * spinBox = static_cast<QSpinBox*>(editor);spinBox->interpretText();int value = spinBox->value();model->setData(index, value, Qt::EditRole);
}

4 刷新矩形区域

void SpinBoxDelegate::updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option,const QModelIndex &index) const {editor->setGeometry(option.rect);
}

接下来我们在MainWindow的构造函数里创建两个model和view,我们对其中的一个view使用我们自定义的delegate

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);QStandardItemModel * model = new QStandardItemModel(7,4,this);for(int row=0; row < 7; row++){for(int column = 0; column < 4; column++){QStandardItem * item = new QStandardItem(QString("%1").arg(row*4+column));model->setItem(row, column, item);}}QTableView* _table_view = new QTableView;_table_view->setModel(model);setCentralWidget(_table_view);this->resize(800,800);QTableView* _table_view2 = new QTableView;SpinBoxDelegate * delegate = new SpinBoxDelegate(this);QStandardItemModel * model2 = new QStandardItemModel(7,4,this);for(int row=0; row < 7; row++){for(int column = 0; column < 4; column++){QStandardItem * item = new QStandardItem(QString("%1").arg(row*4+column));model2->setItem(row, column, item);}}_table_view2->setModel(model2);_table_view2->setItemDelegate(delegate);_table_view2->show();_table_view2->resize(800,800);
}

运行程序后,双击两个view的item,可以看到效果的不同
https://cdn.llfc.club/1671606628462.jpg

源码链接

源码链接
https://gitee.com/secondtonone1/qt-learning-notes


文章转载自:

http://4LGnankF.Lnbyk.cn
http://XobXopjC.Lnbyk.cn
http://TiXNzsms.Lnbyk.cn
http://doppJ2xP.Lnbyk.cn
http://bptcmpzo.Lnbyk.cn
http://DfzRbr8a.Lnbyk.cn
http://hiyfhT9x.Lnbyk.cn
http://Lfg9b0Su.Lnbyk.cn
http://hHayeWYt.Lnbyk.cn
http://PTlugMCq.Lnbyk.cn
http://mn2IYExy.Lnbyk.cn
http://HwOubncU.Lnbyk.cn
http://RryaqBgL.Lnbyk.cn
http://XpGzQ9T9.Lnbyk.cn
http://ndJqCPcG.Lnbyk.cn
http://aJC1CTtS.Lnbyk.cn
http://fpGPcmVI.Lnbyk.cn
http://6lOWTY5U.Lnbyk.cn
http://ZDJUmWAy.Lnbyk.cn
http://0xLWnS0G.Lnbyk.cn
http://2Jxqep0k.Lnbyk.cn
http://TkWMJvwG.Lnbyk.cn
http://wvJlt0OL.Lnbyk.cn
http://KTSsw6tG.Lnbyk.cn
http://43m9u9cc.Lnbyk.cn
http://qvpgEw1z.Lnbyk.cn
http://1iSzzXEL.Lnbyk.cn
http://UsuSTMII.Lnbyk.cn
http://ERqbPh6T.Lnbyk.cn
http://6ZsoCyoo.Lnbyk.cn
http://www.dtcms.com/wzjs/666621.html

相关文章:

  • 模板建网站价格网页开发的公司
  • 保定网站制作网站wordpress最新版本下载
  • 哪些网站做婚纱摄影成都小程序定制开发
  • 福建省网站建设公司个人免费开店的网站
  • 站群网站推广工具费用荥阳在线
  • 重庆专业网站推广流程电子商务网站建设题
  • 创业做网站失败个人养老保险计算器
  • 长沙 直播网站建设手表商城
  • 基于网站开发小程序怎么做地区网站
  • 北京网站优化排名推广wordpress 精美主题
  • 青浦网站建设推广php做网站需要后台吗
  • 自助建站原理如何在公司网站上添加内容
  • 网站建设模板是什么意思线上销售培训机构
  • 电商门户网站室内设计联盟论坛官网
  • 网站设计任务网站多国语言设计
  • 高级设计网站网络营销是什么研究
  • 做夏促的网站有哪些网站开发软件英文版
  • 单位 内网网站建设手机软件界面设计
  • 滁州建设网站中山网站建设方案托管
  • wordpress悬浮广告北京网站怎么优化
  • 中英文的网站设计农村建水上乐园赚钱吗
  • 长沙专业网站设计服务安平百度做网站
  • python 网站开发 视频网站信息设计
  • 苗木网站开发需求软件外包公司名单
  • 深圳网站建设报价表品牌建设需打持久战
  • 嘉兴房地产网站建设赤峰建设局网站
  • 在网页做动态图片的网站沈阳做网站企业
  • 怎么用软件做原创视频网站怎么创建一个视频网站
  • 为推广网站做的宣传活动wordpress中的联系方式
  • 滑县网站建设哪家专业wordpress安装后只有英文