当前位置: 首页> 科技> IT业 > 企业管理咨询是做什么_网页美工设计培训学校哪家好_做互联网推广的公司_深圳网络公司推广

企业管理咨询是做什么_网页美工设计培训学校哪家好_做互联网推广的公司_深圳网络公司推广

时间:2025/7/12 20:06:00来源:https://blog.csdn.net/yuanbenshidiaos/article/details/144859739 浏览次数:0次
企业管理咨询是做什么_网页美工设计培训学校哪家好_做互联网推广的公司_深圳网络公司推广

一、模型/视图结构概述

  • 基本原理
    • Qt 的模型/视图(Model/View)架构将数据的存储和显示分离,提高了代码的可维护性和复用性。
    • 模型(Model):负责存储和管理数据,提供数据的访问接口,如获取数据、插入数据、修改数据、删除数据等。
    • 视图(View):负责显示数据,不关心数据的存储和操作,只根据模型的数据进行显示。
    • 代理(Delegate):负责在视图中渲染和编辑数据项,提供了一种机制来定制数据的显示和编辑方式,例如使用自定义的部件进行数据的编辑。

二、QAbstractItemModel 类

  • 功能
    • 是所有项模型的抽象基类,定义了项模型必须实现的接口,如 rowCountcolumnCountdatasetData 等,用于提供数据的存储和操作接口。
    • 可以自定义继承自 QAbstractItemModel 的模型类,以满足不同的数据存储和操作需求。

三、QAbstractItemView 类

  • 功能
    • 是所有项视图的抽象基类,提供了显示数据的通用接口,如 setModel 用于关联一个模型,视图会根据模型的数据进行显示和更新。
    • 常见的派生类有 QListViewQTreeViewQTableView 等,分别用于列表、树状、表格形式的数据显示。

四、QStringListModel 类及示例程序功能实现

  • 功能
    • 存储一个字符串列表,方便地用于 QListViewQComboBox 等视图的数据显示。
#include <QApplication>
#include <QListView>
#include <QStringListModel>int main(int argc, char *argv[])
{QApplication app(argc, argv);QStringListModel *model = new QStringListModel;QStringList stringList;stringList << "Item 1" << "Item 2" << "Item 3";model->setStringList(stringList);QListView *listView = new QListView;listView->setModel(model);listView->show();return app.exec();
}
  • 代码解释
    1. 创建一个 QStringListModel 并添加一些字符串元素。
    2. 创建一个 QListView 并将 QStringListModel 设置为其模型,QListView 将显示字符串列表中的元素。

五、自定义代理

  • 自定义代理功能
    • 允许用户自定义数据在视图中的显示和编辑方式,例如使用自定义的部件进行数据的编辑,或者添加一些特定的显示效果。
      在这里插入图片描述

六、QStyledItemDelegate 类及设计自定义代理类

  • 功能
    • 提供了默认的数据项显示和编辑功能,可作为自定义代理的基类。
#include <QApplication>
#include <QListView>
#include <QStyledItemDelegate>
#include <QPainter>
#include <QStyleOptionViewItem>class CustomDelegate : public QStyledItemDelegate
{
protected:void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override{QStyleOptionViewItem opt = option;initStyleOption(&opt, index);// 自定义绘制painter->save();painter->setPen(Qt::red);painter->drawText(opt.rect, Qt::AlignCenter, index.data().toString());painter->restore();}QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override{// 创建自定义编辑器QLineEdit *editor = new QLineEdit(parent);return editor;}void setEditorData(QWidget *editor, const QModelIndex &index) const override{QLineEdit *lineEdit = qobject_cast<QLineEdit*>(editor);if (lineEdit) {lineEdit->setText(index.data().toString());}}void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override{QLineEdit *lineEdit = qobject_cast<QLineEdit*>(editor);if (lineEdit) {model->setData(index, lineEdit->text());}}void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override{editor->setGeometry(option.rect);}
};int main(int argc, char *argv[])
{QApplication app(argc, argv);QStringListModel *model = new QStringListModel;QStringList stringList;stringList << "Item 1" << "Item 2" << "Item 3";model->setStringList(stringList);QListView *listView = new QListView;listView->setModel(model);CustomDelegate *delegate = new CustomDelegate;listView->setItemDelegate(delegate);listView->show();return app.exec();
}
  • 代码解释
    1. 自定义 CustomDelegate 类,继承自 QStyledItemDelegate
    2. paint 方法用于自定义数据项的绘制,这里将文本绘制为红色。
    3. createEditor 方法创建自定义的编辑部件(这里是 QLineEdit)。
    4. setEditorData 方法将模型数据设置到编辑器中。
    5. setModelData 方法将编辑器的数据更新到模型中。
    6. updateEditorGeometry 方法设置编辑器的位置和大小。

七、QFileSystemModel 和 QTreeView 类及示例程序功能实现

  • 功能
    • QFileSystemModel 提供了文件系统的数据模型,可以显示文件和目录。
    • QTreeView 可以用来显示 QFileSystemModel 提供的数据。
#include <QApplication>
#include <QTreeView>
#include <QFileSystemModel>int main(int argc, char *argv[])
{QApplication app(argc, argv);QFileSystemModel *model = new QFileSystemModel;model->setRootPath(QDir::homePath());QTreeView *treeView = new QTreeView;treeView->setModel(model);treeView->setRootIndex(model->index(QDir::homePath()));treeView->show();return app.exec();
}
  • 代码解释
    1. 创建 QFileSystemModel 并设置根路径为用户的主目录。
    2. 创建 QTreeView 并将 QFileSystemModel 设置为其模型。
    3. QTreeView 的根索引设置为用户主目录,使其显示用户主目录下的文件和目录结构。
      在这里插入图片描述
关键字:企业管理咨询是做什么_网页美工设计培训学校哪家好_做互联网推广的公司_深圳网络公司推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: