【实操干货】如何开始用Qt Widgets编程?(五)

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

在本文中,我们通过使用C++和Qt Widgets模块实现一个简单的记事本应用程序来学习基本的Qt知识,该应用程序是一个小型的文本编辑器,允许您创建文本文件、保存、打印或重新打开并在此编辑它,还可以设置要使用的字体。

在上文中(点击这里回顾>>),我们主要介绍了如何开始添加用户交互,例如打开文件、保存文件、以另一个名称保存文件等,本文将继续介绍用户交互添加的其他部分,以及如何从命令行构建和运行。

【实操干货】如何开始用Qt Widgets编程?(一)

点击获取Qt Widget组件下载(Q技术交流:166830288)

添加用户交互
打印文件

如果想要使用打印功能,需要在项目文件中添加PrintSupport:

find_package(Qt6
REQUIRED COMPONENTS Core Gui Widgets
OPTIONAL_COMPONENTS PrintSupport
)在notepad.cpp中,我们声明了一个QPrinter对象printDev:void Notepad::print()
{
#if defined(QT_PRINTSUPPORT_LIB) && QT_CONFIG(printer)
QPrinter printDev;
#if QT_CONFIG(printdialog)
QPrintDialog dialog(&printDev, this);
if (dialog.exec() == QDialog::Rejected)
return;
#endif // QT_CONFIG(printdialog)
ui->textEdit->print(&printDev);
#endif // QT_CONFIG(printer)
}

我们启动一个打印机对话框,并将选中的打印机存储在对象printDev中。如果单击Cancel并且没有选择打印机,则方法返回。实际的打印机命令由ui->textEdit->print给出,并以QPrinter对象作为参数。

选择字体
void Notepad::selectFont()
{
bool fontSelected;
QFont font = QFontDialog::getFont(&fontSelected, this);
if (fontSelected)
ui->textEdit->setFont(font);
}

我们声明了一个布尔值,指示是否使用QFontDialog选择了一个字体。如果是这样,使用ui->textEdit->setFont(myfont)设置字体。

复制,剪切,粘贴,撤消和重做

如果您选择了一些文本,并希望将其复制到剪贴板,则调用ui->textEdit的适当方法,剪切、粘贴、撤消和重做也是如此。

下图显示了要使用的方法名。

【实操干货】如何开始用Qt Widgets编程?(一)

从命令行构建和运行

要从命令行构建示例应用程序,请为其创建一个构建目录。切换到构建目录并运行qt-cmake来配置您的项目进行构建,如果项目配置成功,生成的文件能构建项目。

md <build_directory>
cd <build_directory>
<qt_installation_directory>\bin\qt-cmake -GNinja <source_directory>
<generator>

这些命令在构建目录中创建一个可执行文件,CMake工具读取项目文件并生成如何构建应用程序的说明,然后生成器使用这些指令生成可执行的二进制文件。

例如,要在Windows上构建记事本示例,当使用Ninja作为生成器时,输入以下命令:

md notepad-build
cd notepad-build
C:\Qt\6.5.2\msvc2019_64\bin\qt-cmake -GNinja C:\Examples\notepad
ninja

如果不使用Ninja作为生成器,使用生成器独立的CMake命令来构建应用程序,替代Ninja:

cmake --build

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/76144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高教社杯数模竞赛特辑论文篇-2018年B题:智能 RGV 的动态调度策略(附获奖论文及MATLBA和JAVA代码)(代码篇3)

本文代码较多,分为多篇来写,其他篇详见 智能 RGV 的动态调度策略(附获奖论文及MATLBA代码) 智能 RGV 的动态调度策略(附获奖论文及MATLBA和JAVA代码)(代码篇1)

查看Android App包名,查看keystore的信息,导出公钥

查看Android App包名的三种方法 cmd中输入命令&#xff1a;adb shell am monitor 然后启动需要获取包名的应用cmd中输入命令&#xff1a;adb shell pm list packages -3 查看自己安装的app包名安卓系统中&#xff1a;设置——应用——正在运行 查看…

04_瑞萨GUI(LVGL)移植实战教程之驱动LCD屏(SPI)

本系列教程配套出有视频教程&#xff0c;观看地址&#xff1a;https://www.bilibili.com/video/BV1gV4y1e7Sg 4. 驱动LCD屏(SPI) 本次实验我们在上一次实验的基础上驱动 LCD屏(SPI)。 上次实验我们已经能驱动触摸屏(I2C)并打印触摸点坐标&#xff0c;这次实验我们的目标是点…

fflush的用法

在Linux中&#xff0c;fflush 函数用于刷新文件流的缓冲区&#xff0c;确保已经写入或读取的数据被立即写入或读取到文件中。它通常用于清空输出缓冲区&#xff0c;以确保数据被写入文件或屏幕上。 fflush 函数的基本用法如下&#xff1a; int fflush(FILE *stream); 其中&am…

Pytorch intermediate(三) BiLSTM

Bi-directional Long Short-Term Memory&#xff0c;双向LSTM网络。 有些时候预测可能需要由前面若干输入和后面若干输入共同决定&#xff0c;这样会更加准确。因此提出了双向循环神经网络&#xff0c;网络结构如上图。 构建LSTM模型时&#xff0c;在参数中添加bidirectionalTr…

产品经理需要熟悉的网站

产品经理需要熟悉的网站 一、SAAS平台的聚合二、saas产品教程三、原型参考教程四、在线文档协作五、云笔记六、脑图&流程图 一、SAAS平台的聚合 作用&#xff1a;面试和工作的需要&#xff0c;方便各行业产品查找竞品。 网址&#xff1a;https://www.zhaosaas.com/&#x…

列表对象复制属性到另一个列表对象 从List<Object>另一个List<Object>

目录 事件起因环境和工具解决办法结束语 事件起因 在写一个市级的项目时&#xff0c;遇到了一个问题&#xff0c;这个项目涉及的数据内容非常大&#xff0c;光是数据库文件的大小就已经达到了12G&#xff0c;数据的规模大致是在百万级的&#xff0c;光是我这次参与处理的数据就…

21.5 CSS 网页布局方式

网页布局方式 网页布局方式: 是指浏览器对网页中的元素进行排版的方法.常见的网页布局方式包括: * 1. 标准流(文档流/普通流)布局: 这是浏览器默认的排版方式.元素按照其在文档中的位置依次排列, 可以使用CSS的盒模型属性进行水平和垂直布局.* 2. 浮动布局: 通过设置元素的fl…

vue echart详细使用说明

vue ECharts 使用详细步骤&#xff1a; 安装ECharts&#xff1a; 在Vue项目中使用ECharts之前&#xff0c;你需要先安装ECharts库。可以使用npm或yarn来安装ECharts依赖&#xff1a; npm install echarts --save或者 yarn add echarts导入ECharts库&#xff1a; 在Vue组件中&am…

qml嵌入到QWidget的两种方式介绍

本文介绍qml页面嵌入到QWidget的两种方式,以及这两种方式的区别。 方式1 在 Qt 中,可以使用 QQuickWidget 将 QML 内容嵌入到基于 QWidget 的应用程序中。这是在旧的 QWidget-based 应用程序中逐渐引入 QML UI 的一种常见方式。 以下是如何使用 QQuickWidget 将 QML 内容嵌…

VSCode搭建Django开发环境

文章目录 一、Django二、搭建步骤1. 安装python和VSCode&#xff0c;安装插件2. VSCode打开项目文件夹3. 终端中键入命令&#xff1a;建立虚拟环境4. 选择Python的解释器路径为虚拟环境5. 在虚拟环境中安装Django6.创建Django项目7. 创建app应用8. 运行应用9. 修改配置中文显示…

后端返回parentId,前端处理成children嵌套数据

rouyi 的 vuetree函数结合elementui el-table组件使用 把有parentId和id结构的数据处理成children嵌套数据&#xff0c;字段名称不一致&#xff0c;可以设置。 vuetree函数&#xff1a; /*** 构造树型结构数据* param {*} data 数据源* param {*} id id字段 默认 id* param…

Sharding-Jdbc(2):Sharding-Jdbc入门案例

1 前置条件 搭建读写分离的数据库环境,搭建方法如下文,目标数据库test Mysql性能优化(5):主从同步原理与实现_mysql主从配置优化_不死鸟.亚历山大.狼崽子的博客-CSDN博客 2 新建maven项目 3 pom引入依赖 <?xml version="1.0" encoding="UTF-8"…

微服务高可用容灾架构设计

导语 相对于过去单体或 SOA 架构&#xff0c;建设微服务架构所依赖的组件发生了改变&#xff0c;因此分析与设计高可用容灾架构方案的思路也随之改变&#xff0c;本文对微服务架构落地过程中的几种常见容灾高可用方案展开分析。 作者介绍 刘冠军 腾讯云中间件中心架构组负责…

YOLO 物体检测 系列教程 总目录

1、YOLO物体检测系列1&#xff1a;YOLOV1整体解读 YOLO物体检测系列1&#xff1a;YOLOV1整体解读 2、YOLO物体检测系列2&#xff1a;YOLOV2整体解读 YOLO物体检测系列2&#xff1a;YOLOV2整体解读

[SM6225][Android13]user版本默认允许root和remount

开发平台基本信息 芯片: 高通SM6225版本: Android 13kernel: msm-5.15 问题描述 刚刚从Framework踏入性能的小殿堂&#xff0c;User版本默认是不会开启root权限的&#xff0c;而且一般调试需要设置一下CPU GPU DDR performance模式或者修改一些schedule util等调核调频节点去…

一起学数据结构(6)——栈和队列

上篇文章中&#xff0c;对栈的概念及特点进行了解释&#xff0c;并且给出了栈实现的具体代码。本篇文章将给出队列的基本概念及特点。并给出相应的代码。 1. 队列的概念及结构&#xff1a; 在给出队列的概念之前&#xff0c;先给出上篇文章中提到的栈的概念&#xff1a;一种只…

如何将项目推送到GitHub中

将项目推送到 GitHub 仓库并管理相关操作&#xff0c;遵循以下步骤&#xff1a; 创建 GitHub 账户&#xff1a;如果您没有 GitHub 账户&#xff0c;首先需要在 GitHub 官网 上创建一个账户。 创建新仓库&#xff1a;在 GitHub 页面上&#xff0c;点击右上角的加号图标&#xf…

一文读懂java变量类型

前言 在学习和使用Java编程语言时&#xff0c;理解变量类型是至关重要的基础知识。Java是一种静态类型语言&#xff0c;强调变量必须先声明其类型&#xff0c;才能进行后续操作。因此&#xff0c;对于初学者来说&#xff0c;了解Java中不同的变量类型及其特性是迈向编程成功的…

创建vue3项目并引用elementui

1.创建vu3项目&#xff1a; vue3官网&#xff1a;简介 | Vue.js 执行命令 npm create vuelatest 2.终端会出现如下选项&#xff0c;不确定的直接enter键进入下一步&#xff1b; 3.然后再执行下方命令&#xff1a; cd <your-project-name> npm install4.安装依赖成功…