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

外贸网站推广怎么样wordpress 文学付费

外贸网站推广怎么样,wordpress 文学付费,手机响应式网站,建设部网站四库一平台委托是Qt中的一种机制,用于在Qt模型/视图架构中处理特定类型的数据。委托提供了一种方便的方法来定制特定类型的数据的显示和编辑。委托可以做以下事情: 编辑特定类型的数据: 通过创建编辑器来编辑特定类型的数据,例如日期,数值等。 渲染特定类型的数据: 通过定制单…
  • 委托是Qt中的一种机制,用于在Qt模型/视图架构中处理特定类型的数据。委托提供了一种方便的方法来定制特定类型的数据的显示和编辑。
  • 委托可以做以下事情:

编辑特定类型的数据: 通过创建编辑器来编辑特定类型的数据,例如日期,数值等。
渲染特定类型的数据: 通过定制单元格的外观来渲染特定类型的数据,例如颜色,字体等;
支持不同类型的编辑器: 支持不同类型的编辑器,例如文本编辑器,下拉列表编辑器等;
处理编辑器的事件: 通过实现eventFilter()方法来处理编辑器的事件,如键盘事件;
更新编辑器的尺寸: 通过实现sizeHint()方法来更新编辑器的尺寸;
数据验证: 通过实现editorEvent()来验证编辑器中的数据是否合法。

  • 委托的常见应用场景包括:

表格和列表视图: 在表格和列表视图中使用委托可以方便地编辑单元格中的数据,并定制单元格的外观
属性编辑器: 使用委托可以创建自定义属性编辑器来编辑特定类型的属性
文件对话框: 使用委托可以定制文件对话框中的文件列表的外观

以QTableView为例子:

  1. 需要为QTableView设置一个model
  • 也可以自定义model,继承QStandardItemModel;
  1. 为QTableView设置Delegate
  • 继承QStandardItemModel、QItemDelegate或者QStyledItemDelegate;
  • QItemDelegate是QAbstractItemDelegate的子类,它提供了一种通用的委托类;
  • QStyledItemDelegate是QItemDelegate的子类,它使用Qt Style Sheets来渲染单元格中的数据,这样可以更好地与应用程序的外观保持一致。它还提供了一些额外的功能,如支持自定义编辑器和支持编辑器工厂,这样可以更好地管理编辑器;
  1. 委托类需要重写对应的函数,比如:
  1. QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,const QModelIndex &index) const;
  2. void setEditorData(QWidget *editor, const QModelIndex &index) const;
  3. void setModelData(QWidget *editor, QAbstractItemModel *model,const QModelIndex &index) const;
  4. void updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option, const QModelIndex &index) const;
  5. void paint(QPainter *painter, const QStyleOptionViewItem &option,const QModelIndex & index) const;
  6. QSize sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index) const;
  7. bool eventFilter(QObject *object, QEvent *event) ;
  8. bool editorEvent(QEvent *event, QAbstractItemModel *model,
    const QStyleOptionViewItem &option, const QModelIndex &index) override;

创建编辑器

QWidget* TableViewDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{QSpinBox *sbox = new QSpinBox(parent);sbox->setRange(sboxMinValue, sboxMaxValue);sbox->setSuffix(sboxSuffixStr);sbox->setPrefix(sboxPrefixStr);sbox->setSingleStep(sboxSingleStep);sbox->setStepType(sboxStepType);sbox->setValue(sboxInitValue);return  sbox;
}

设置编辑器数据 setEditorData

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

设置模型数据 setModelData

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

更新编辑器集合属性 updateEditorGeometry

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

部分代码如下:

#include <QStyledItemDelegate>
#include <QItemDelegate>
#include <QStandardItemModel>
/*
*
*
*	创建一个QSpinBox设置相关参数函数
*
*
*/
class TableViewDelegate  : public QStyledItemDelegate
{Q_OBJECTpublic:TableViewDelegate(QObject *parent = nullptr);~TableViewDelegate();// editingQWidget *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;
private:void init();
public:/*QSpinBox设置相关参数函数*/void setSboxMaxValue(const int max);void setSboxMinValue(const int min);void setSboxPrefixStr(const QString &prefix);void setSboxSuffixStr(const QString &suffix);void setSboxSingleStep(const int SingleStep);void setSboxInitValue(const int initValue);void setSboxStepType(QAbstractSpinBox::StepType st);
private:/*QSpinBox相关参数*/int sboxMaxValue;/*微调框的最大值*/int sboxMinValue;/*微调框的最小值*/QString sboxPrefixStr;/*微调框前缀*/QString sboxSuffixStr;/*微调框后缀*/int sboxSingleStep;/*微调框步长*/int sboxInitValue;/*微调框初始值*/QAbstractSpinBox::StepType sboxStepType;/*微调框步长类型*/
};Delegate.cpp
TableViewDelegate::TableViewDelegate(QObject *parent): QStyledItemDelegate(parent)
{
}
TableViewDelegate::~TableViewDelegate()
{
}
QWidget* TableViewDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{QSpinBox *sbox = new QSpinBox(parent);sbox->setRange(sboxMinValue, sboxMaxValue);sbox->setSuffix(sboxSuffixStr);sbox->setPrefix(sboxPrefixStr);sbox->setSingleStep(sboxSingleStep);sbox->setStepType(sboxStepType);sbox->setValue(sboxInitValue);return  sbox;
}//将模型中的数据赋值给编辑器
void TableViewDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{auto value = index.model()->data(index, Qt::EditRole);QSpinBox *spinBox = static_cast<QSpinBox*>(editor);spinBox->setValue(value.toInt());
}
void TableViewDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index)const
{QSpinBox *spinBox = static_cast<QSpinBox*>(editor);QVariant value = spinBox->value();model->setData(index, value, Qt::EditRole);
}
void TableViewDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index)const
{editor->setGeometry(option.rect);
}
/*QSpinBox设置相关参数函数*/
void TableViewDelegate::setSboxMaxValue(const int max)
{sboxMaxValue = max;
}
void TableViewDelegate::setSboxMinValue(const int min)
{sboxMinValue = min;
}
void TableViewDelegate::setSboxPrefixStr(const QString &prefix) 
{sboxPrefixStr = prefix;
}
void TableViewDelegate::setSboxSuffixStr(const QString &suffix)
{sboxSuffixStr = suffix;
}
void TableViewDelegate::setSboxSingleStep(const int SingleStep)
{sboxSingleStep = SingleStep;
}
void TableViewDelegate::setSboxInitValue(const int initValue)
{sboxInitValue = initValue;
}
void TableViewDelegate::setSboxStepType(QAbstractSpinBox::StepType st)
{sboxStepType = st;
}
void TableViewDelegate::init()
{
}
//在QTableView中使用
void init() 
{QStringList columnNames;columnNames << "QSpinBox" << "QComboBox" << "QCheckBox" << ".....";model = new QStandardItemModel;model->setRowCount(10);model->setHorizontalHeaderLabels(columnNames);ui->tableView->setModel(model);TableViewDelegate * tabDelegate = new TableViewDelegate;tabDelegate->setSboxMinValue(0);tabDelegate->setSboxMaxValue(100);tabDelegate->setSboxSingleStep(2);tabDelegate->setSboxInitValue(10);//设置第一列为TableViewDelegate 样式ui->tableView->setItemDelegateForColumn(0, tabDelegate);
}
http://www.yayakq.cn/news/180599/

相关文章:

  • 泉州电商网站建设单机游戏
  • 淄博学校网站建设报价门户网站asp源码
  • 合肥网站建设优化网站建设 信科网络
  • 网站开发待遇怎么样广州做响应式网站
  • 广元做网站站排名博物馆装修厂家
  • 网站设计与网页制作教程wordpress 评论不了
  • 爱站网关键词挖掘网站建设国际深圳
  • 博兴做网站wordpress4.8.0
  • 做网站难吗辽宁seo推广
  • flash网站大全网站建设开发人员
  • 教育网站报名中信建设有限责任公司 湖南中筑建设公司
  • 查网站是否正规如何建立网站赚钱
  • 百度上可以做中英文网站吗wordpress p2 theme
  • 不需要验证码的注册网站门户网站建设存在的问题和差距
  • 小语种网站wordpress突然变慢
  • 青岛建设网站制作常熟做网站公司
  • 深圳建网建网站大连建设
  • 视频号的网站链接东莞市seo网络推广企业
  • wordpress网站建设教程视频无锡互联网前十名公司
  • 门户网站建设教程动漫设计与制作主修课程有哪些
  • 北京市建设工程信息网交易网站chinacd.wordpress0
  • 网站管理系统排行榜榆林市工程造价信息网
  • 国内优秀网站赏析辽宁省城乡建设规划院网站
  • 公需科目在哪个网站做商务网站建设的第一步
  • 网站优化标题石家庄做网站最好的公司
  • 怀宁网站建设wordpress中文博客
  • 如何避免网站被降权百度一下百度知道
  • 做网站还是软件网线制作顺序
  • 让别人做网站需要提供什么wordpress+视频站模版
  • 手机论坛网站模板沈阳京科医院男科