Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。
在本文中,我们通过使用C++和Qt Widgets模块实现一个简单的记事本应用程序来学习基本的Qt知识,该应用程序是一个小型的文本编辑器,允许您创建文本文件、保存、打印或重新打开并在此编辑它,还可以设置要使用的字体。
在上文中(点击这里回顾>>),我们主要介绍了如何开始添加用户交互,例如打开文件、保存文件、以另一个名称保存文件等,本文将继续介绍用户交互添加的其他部分,以及如何从命令行构建和运行。
点击获取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-cmake来配置您的项目进行构建,如果项目配置成功,生成的文件能构建项目。
- md
- cd
\bin\qt-cmake -GNinja
这些命令在构建目录中创建一个可执行文件,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