界面开发框架Qt新手入门教程 – 颜色编辑器示例

Qt 是目前最先进、最完整的跨平台C 开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

界面开发框架Qt新手入门教程 - 颜色编辑器示例

Qt提供了许多功能,可以以不同的方式显示预先和用户定义的项模型,模型/视图体系结构引入的功能分离为开发人员定制项的表示提供了更大的灵活性。

QtitanRibbon官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网

颜色编辑器示例

本示例演示如何创建QItemDelegate可以使用的编辑器。

界面开发框架Qt新手入门教程 - 颜色编辑器示例

在QListView、QTableView或QTreeView中编辑数据时,编辑器由委托创建和显示。QItemDelegate是Qt的项目视图使用的默认委托,它使用QItemEditorFactory为它创建编辑器,QItemEditorFactory提供的唯一实例默认安装在所有项目委托上。

项目编辑器包含QItemEditorCreatorBase实例的集合,这些实例为特定的QVariant数据类型生成编辑器(Qt中的所有模型都将数据存储在QVariant中),编辑器可以是任何Qt或自定义小部件。

在本例中,我们将创建一个编辑器(在ColorListEditor类中实现),它可以编辑QColor数据类型并由qitemdelegate使用。为此,我们创建了一个新的QItemEditorCreatorBase,该QItemEditorCreatorBase生成colorlisteditor并将其注册到一个新工厂,我们将其设置为默认的编辑器项工厂(唯一的工厂实例)。为了测试编辑器,我们实现了Window类,它显示一个QTableWidget,可以在其中编辑QColors。

窗口类实现

在窗口类中,为颜色编辑器创建项目编辑器基础,并将其添加到默认工厂。同时还添加了一个QTableWidget,可以在其中测试编辑器,它填充了一些数据并显示在窗口中。

仔细看看构造函数

Window::Window(){QItemEditorFactory *factory = new QItemEditorFactory;QItemEditorCreatorBase *colorListCreator =new QStandardItemEditorCreator<ColorListEditor>();factory->registerEditor(QMetaType::QColor, colorListCreator);QItemEditorFactory::setDefaultFactory(factory);createGUI();}

QStandardItemEditorCreator是一个继承了QItemEditorCreatorBase的方便类,它的构造函数接受一个模板类,其实例从createWidget()返回。创建者使用一个构造函数,该构造函数将QWidget作为惟一参数;模板类必须提供这一点,这样,就不需要创建QStandardItemEditorCreator的子类。

在设置了新工厂之后,所有标准项目委托都将使用它(也就是,在设置新的默认工厂之前创建的委托)。

createGUI()函数设置表并用数据填充它。

ColorListEditor定义

ColorListEditor继承了QComboBox,并让用户从弹出列表中选择一个QColor。

class ColorListEditor : public QComboBox{Q_OBJECTQ_PROPERTY(QColor color READ color WRITE setColor USER true)public:ColorListEditor(QWidget *widget = nullptr);public:QColor color() const;void setColor(const QColor &color);private:void populateList();};

QItemDelegate 管理编辑器和模型之间的交互,它从模型中检索要编辑的数据,并将来自编辑器的数据存储在模型中。编辑器编辑的数据存储在编辑器的用户数据属性中,委托使用Qt的属性系统按名称访问它。我们使用Q_PROPERTY宏声明用户数据属性,属性被设置为具有user关键字的用户类型。

ColorListEditor实现

ColorListEditor的构造函数简单地调用populateList(),稍后我们将讨论它,接下来看color()函数:

QColor ColorListEditor::color() const{return qvariant_cast<QColor>(itemData(currentIndex(), Qt::DecorationRole));}

我们返回在组合框中选择的数据,数据存储在Qt::DecorationRole中,然后颜色也显示在弹出列表中(如上图所示)。

void ColorListEditor::setColor(const QColor &color){setCurrentIndex(findData(color, Qt::DecorationRole));}

findData()函数搜索组合框中的项目,并返回Qt::Decoration角色中有颜色的项目索引。

void ColorListEditor::populateList(){const QStringList colorNames = QColor::colorNames();for (int i = 0; i < colorNames.size(); i) {QColor color(colorNames[i]);insertItem(i, colorNames[i]);setItemData(i, color, Qt::DecorationRole);}}

Qt通过名称知道一些预定义的颜色,只需循环遍历这些元素,用项填充编辑器。

Qt Widget组件推荐

  • QtitanRibbon – Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、LinuxMac OS X提供功能完整的Ribbon组件。
  • QtitanChart – Qt类图表组件:是一个C 库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
  • QtitanDataGrid – Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
  • QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月23日 上午9:12
下一篇 2023年4月23日 上午9:28

相关推荐

  • 办公楼速通门的优点(办公楼速通门的优点和缺点)

      办公大楼速通门隶属于通道门禁系统,是现代出入口控制系统的重要组成部分。控制系统驱动门翼,自动开启和关闭,可通过编程设置选择操作模式:只要确认进入者得到授权,门翼就会自动开启。延…

    科研百科 2023年12月31日
    132
  • arcmap和中科图新地图比较

    arcmap和中科图新地图都是目前流行的地图软件,它们各自具有独特的功能和特点,适用于不同的应用场景。本文将比较arcmap和中科图新地图的优缺点,以及如何选择适合自己的地图软件。…

    科研百科 2024年10月14日
    9
  • 刘洋航天员个人简历(刘洋航天员参加过的科研项目)

    刘洋航天员参加过的科研项目 刘洋是中国航天员,她曾参加过多个科研项目。其中,最著名的是参加的“空间实验室组合运行”项目。该项目是中国航天员在太空中完成的一个复杂任务,包括在空间实验…

    科研百科 2024年8月2日
    65
  • 党建引领城市社区治理问题研究——以D街道为例

    党建引领城市社区治理问题研究——以D街道为例 近年来,随着城市化进程的加速,城市社区治理问题越来越受到人们的关注。在城市社区治理中,党建引领是一个重要的策略和手段。本文以D街道为例…

    科研百科 2024年10月17日
    3
  • 设备管理软件有哪些?这6款值得推荐(设备管理软件有哪些-这6款值得推荐的)

    在现代社会中,软件已经成为了企业信息化、设备管理等方面必不可少的工具。而设备管理系统是将信息化了设备技术信息与现代化管理相结合,是实现研究级管理信息化的先导。 对于设备管理而言,借…

    科研百科 2023年12月15日
    126
  • 党建品牌 国资委

    党建品牌是中国共产党在管理企业过程中创立的品牌,是国有企业建立良好党建氛围和加强党建组织建设的重要手段。国资委作为国有企业的管理主体,其在推进国有企业改革和发展的过程中,积极探索和…

    科研百科 2024年10月7日
    16
  • 党委委员党龄要求

    党委委员党龄要求 党委委员是中国共产党的高级领导职位,代表着中国共产党在各地分支机构中的最高地位。在担任党委委员职位的过程中,要经历许多重要的阶段,这些阶段不仅代表着个人的成长,也…

    科研百科 2024年10月5日
    14
  • 痕迹管理可以有,“痕迹主义”不能要(痕迹管理和痕迹主义)

    来源:人民日报 郑 闻 晨 莹 “现在‘痕迹管理’比较普遍,但重‘痕’不重‘绩’、留‘迹’不留‘心’。”习近平总书记在中共中央政治局第十次集体学习时的讲话,切中“痕迹主义”的弊端。…

    科研百科 2023年6月9日
    161
  • 关于禅道项目管理系统

    关于禅道项目管理系统 禅道项目管理系统是一款功能强大、易于使用、高效的项目管理工具。它可以帮助项目经理和项目团队更好地组织和管理项目,提高项目效率和质量。 禅道项目管理系统提供了多…

    科研百科 2024年12月30日
    0
  • 郑州大学2022年科技创新工作十大亮点(郑州大学科技进步奖)

    2022年,郑州大学坚持“四个面向”,积极对接国家和河南创新驱动发展战略,进一步推动“一堆人干一件事”科研管理改革,构建完善的科研培育体系,形成了涵盖基础研究培育、重大项目培育、高…

    科研百科 2024年4月16日
    112