没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2023-08-31 11:03:10.327|阅读 125 次
概述:本文中是一个基于Qt Widgets的记事本应用程序的教程,欢迎大家下载组件一起体验!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。
在本文中,我们通过使用C++和Qt Widgets模块实现一个简单的记事本应用程序来学习基本的Qt知识,该应用程序是一个小型的文本编辑器,允许您创建文本文件、保存、打印或重新打开并在此编辑它,还可以设置要使用的字体。
在上文中(点击这里回顾>>),我们为大家介绍了设计用户界面时的Qt Designer(设计器)使用、Notepad Header文件、Notepad 源文件等,本文将继续介绍如何添加用户交互,欢迎持续关注我们。
Qt技术交流群:166830288 欢迎一起进群讨论
要向编辑器添加功能,首先在工具栏上添加菜单项和按钮。
点击"Type Here",然后添加New、Open、Save、Save as、Print和Exit,这将在下面的Action Editor中创建5行代码。要将操作连接到插槽,请右键单击操作并选择Go To slot > triggered(),然后完成给定插槽的代码。
如果还想将操作添加到工具栏,我们可以为每个QAction分配一个图标,然后将QAction拖到工具栏中。通过在相关操作的icon属性中输入图标名称来分配图标,当QAction被拖到工具栏时,单击图标将启动关联的槽。
完成方法newDocument():
void Notepad::newDocument()
{
currentFile.clear();
ui->textEdit->setText(QString());
}
currentFile变量是一个包含当前正在编辑文件的全局变量,clear()清除文本缓冲区,currentFile变量定义在notepad.h的私有部分:
private: Ui::Notepad *ui; QString currentFile;
在notepad.ui中,右键单击actionOpen并选择Go to Slot。
完成open()方法。
void Notepad::open()
{
QString fileName = QFileDialog::getOpenFileName(this, "Open the file");
if (fileName.isEmpty())
return;
QFile file(fileName);
currentFile = fileName;
if (!file.open(QIODevice::ReadOnly | QFile::Text)) {
QMessageBox::warning(this, "Warning", "Cannot open file: " + file.errorString());
return;
}
setWindowTitle(fileName);
QTextStream in(&file);
QString text = in.readAll();
ui->textEdit->setText(text);
file.close();
}
QFileDialog::getOpenFileName打开一个对话框,您能选择一个文件。QFile对象myfile有选择的file_name作为参数,还将选中的文件存储到全局变量currentFile中,以供稍后使用。我们用文件打开文件,作为只读文本文件打开。如果无法打开,则发出警告,并停止程序。
为参数myfile定义了一个QTextStream流,文件myfile的内容被复制到QString文本中,setText(text)用文本填充编辑器的缓冲区。
我们以与打开文件相同的方式创建保存文件的方法,即右键单击actionSave并选择Go to Slot。
void Notepad::save()
{
QString fileName;
// If we don't have a filename from before, get one.
if (currentFile.isEmpty()) {
fileName = QFileDialog::getSaveFileName(this, "Save");
if (fileName.isEmpty())
return;
currentFile = fileName;
} else {
fileName = currentFile;
}
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QFile::Text)) {
QMessageBox::warning(this, "Warning", "Cannot save file: " + file.errorString());
return;
}
setWindowTitle(fileName);
QTextStream out(&file);
QString text = ui->textEdit->toPlainText();
out << text;
file.close();
}
对象myfile链接到全局变量current_file,该变量包含正在处理的文件。如果无法打开myfile,则会发出错误消息并停止该方法。我们创建一个QTextStream输出,编辑器缓冲区的内容被转换为纯文本,然后写入输出。
void Notepad::saveAs()
{
QString fileName = QFileDialog::getSaveFileName(this, "Save as");
if (fileName.isEmpty())
return;
QFile file(fileName);
if (!file.open(QFile::WriteOnly | QFile::Text)) {
QMessageBox::warning(this, "Warning", "Cannot save file: " + file.errorString());
return;
}
currentFile = fileName;
setWindowTitle(fileName);
QTextStream out(&file);
QString text = ui->textEdit->toPlainText();
out << text;
file.close();
}
这与保存文件的过程相同,唯一的区别是这里需要为要创建的文件输入一个新的文件名。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
文章转载自:慧都网



注意: Cogent DataHub 软件 v11 包含一些新功能,您的目标操作系统可能不支持这些功能。
本教程主要为大家介绍如何使用DevExpress WinForms数据网格控件进行数据排序的基础知识,欢迎下载最新版组件体验!
在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。
大型SaaS系统的自动化测试常常受制于界面变化快、结构复杂、加载机制多变等因素。从元素识别到脚本管理,SmartBear TestComplete帮助Salesforce建了可靠的自动化测试体系。
相关产品
一个跨平台的C++图形用户界面应用程序开发框架。
QtitanRibbon专业全面 & 实现Qt技术的跨平台Ribbon UI组件
QtitanChart性能优异的跨平台Qt类图表组件
QtitanDataGrid一个独特的Qt开发框架产品,吸收了Delphi、C++以及其他语言的优点
QtitanDocking一个用于允许创建类似于Microsoft可停靠用户界面的Qt框架组件。
最新文章 MORE
半岛外围网上直营相关的文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
半岛外围网上直营