提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2024-03-20 11:13:00.957|阅读 24 次
概述:本文将为大家介绍如何使用Qt Widget小部件创建文档查看器,欢迎下载最新版组件体验~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。
文档查看器是一个显示和打印JSON、文本和PDF文件的Widgets应用程序。Document Viewer(文档查看器)演示了如何使用带有静态和动态工具栏、菜单和操作的QMainWindow,此外它还演示了基于小部件的应用程序中的以下特性:
在上文中(点击这里回顾>>)主要介绍了创建一个应用程序和主窗口的一些类,本文将继续介绍一些其他类,请持续关注哦~
Qt技术交流群:166830288 欢迎一起进群讨论
HoverWatcher类
HoverWatcher类在将鼠标悬停在小部件上时设置覆盖光标,并在离开时恢复它。为了防止为同一个小部件创建多个HoverWatcher实例,它被实现为每个小部件单个实例。
HoverWatcher继承自,并将它所监视的QWidget作为实例的父对象。它安装了一个事件过滤器来拦截悬停事件而不消耗它们:
HoverWatcher::HoverWatcher(QWidget *watched) : QObject(watched), m_watched(watched) { Q_ASSERT(watched); m_cursorShapes[Entered].emplace(Qt::OpenHandCursor); m_cursorShapes[MousePress].emplace(Qt::ClosedHandCursor); m_cursorShapes[MouseRelease].emplace(Qt::OpenHandCursor); // no default for Left => restore override cursor m_watched->installEventFilter(this); } HoverAction枚举列出了HoverWatcher响应的动作: enum HoverAction { Entered, MousePress, MouseRelease, Left, Ignore };
静态函数创建监视器,为特定的QWidget检查它们是否存在,或者解散监视器:
static HoverWatcher *watcher(QWidget *watched); static const HoverWatcher *watcher(const QWidget *watched); static bool hasWatcher(QWidget *widget); static void dismiss(QWidget *watched);
可以为每个HoverAction设置或取消光标形状,如果没有关联的游标形状,则在触发操作时恢复应用程序的覆盖游标。
public slots: void setCursorShape(HoverAction type, Qt::CursorShape shape); void unSetCursorShape(HoverAction type);
mouseButtons属性保存了用于MousePress操作的鼠标按钮:
void setMouseButtons(Qt::MouseButtons buttons); void setMouseButton(Qt::MouseButton button, bool enable);
特定于动作的信号在处理一个动作后发出:
signals: void entered(); void mousePressed(); void mouseReleased(); void left();
发出一个通用信号,将处理后的动作作为参数传递:
void hoverAction(HoverAction action);
RecentFiles类
RecentFiles是一个 ,专门用于管理最近打开的文件列表。
RecentFiles有插槽添加单个文件或多个文件,如果路径指向存在且可以打开的文件,则将一个条目添加到最近的文件列表中。如果一个文件已经在列表中,它将从其原始位置移除并添加到顶部。
public slots: void addFile(const QString &fileName) { addFile(fileName, EmitPolicy::EmitWhenChanged); } void addFiles(const QStringList &fileNames);
文件通过名称或索引从列表中删除:
void removeFile(const QString &fileName) { removeFile(m_files.indexOf(fileName)); } void removeFile(qsizetype index) {removeFile(index, RemoveReason::Other); }
插槽实现保存和恢复从QSettings:
void saveSettings(QSettings &settings, const QString &key) const; bool restoreFromSettings(QSettings &settings, const QString &key);
在恢复设置时,不存在的文件将被忽略。maxFiles属性保存要存储的最近文件的最大数量(默认为10)。
qsizetype maxFiles(); void setMaxFiles(qsizetype maxFiles);
RecentFiles在接受一个文件之前验证它是否可以被读取。
RecentFileMenu类
RecentFileMenu是一个,专门用于将RecentFiles对象显示为子菜单。
它的构造函数接受一个指向父QObject的指针和一个指向RecentFiles对象的指针,该对象的内容将被可视化。它的fileOpened()信号,当用户从列表中选择一个最近的文件时触发,将绝对路径作为参数传递给该文件。
注意:RecentFileMenu要么被它的父部件销毁,要么被传递给它的构造函数的RecentFiles对象销毁。
class RecentFileMenu : public QMenu { Q_OBJECT public: explicit RecentFileMenu(QWidget *parent, RecentFiles *recent); signals: void fileOpened(const QString &fileName); ... };
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都网本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
一个跨平台的C++图形用户界面应用程序开发框架。
QtitanChart性能优异的跨平台Qt类图表组件
QtitanRibbon专业全面 & 实现Qt技术的跨平台Ribbon UI组件
QtitanDataGrid一个独特的Qt开发框架产品,吸收了Delphi、C++以及其他语言的优点
QtitanNavigation模拟Microsoft Dynamics CRM-2016/Office 365导航界面和一组控件改善Qt.C ++应用程序用户体验的QtitanNavigation组件。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢