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

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

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

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

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

添加用户交互
打印文件

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

cpp 复制代码
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对象作为参数。

选择字体
cpp 复制代码
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-cmake来配置您的项目进行构建,如果项目配置成功,生成的文件能构建项目。

cpp 复制代码
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 主题!
相关推荐
yaoxin5211231 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
凡人叶枫2 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp2 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的2 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉3 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉3 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
凡人叶枫3 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员3 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言
code bean4 小时前
【LangChain】检索器完全指南:从向量检索到生产级 RAG 架构
java·开发语言·微服务
LabVIEW开发4 小时前
LabVIEW + MATLAB 混合编程:爆炸场测试数据精准采集方案
开发语言·matlab·labview