- 浏览: 761346 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
mainwindow.h
mainwindow.cpp
main.cpp
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <boost/scoped_ptr.hpp> using namespace boost; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); void readFile(const QString& fileName); void writeFile(const QString& fileName); public slots: void open(); void save(); void saveAs(); void close(); void quit(); protected: void dragEnterEvent(QDragEnterEvent *); void dropEvent(QDropEvent *); private: class MainWindowUi; scoped_ptr<MainWindowUi> mui; class MainWindowData; scoped_ptr<MainWindowData> mData; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include <QFileDialog> #include <QString> #include <QTextStream> #include <QCloseEvent> #include <QDesktopWidget> #include <QUrl> #include "mainwindow.h" #include "ui_mainwindow.h" #include <iostream> using namespace std; class MainWindow::MainWindowData{ public: QString mFileName; QString mText; QFile mFile; QTextStream mStream; }; class MainWindow::MainWindowUi:public Ui::MainWindow{ public: QFileDialog* mFileDialog; public: MainWindowUi(){ } }; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { mui.reset(new MainWindowUi); mui->setupUi(this); mData.reset(new MainWindowData); mui->mFileDialog = new QFileDialog(this); mui->textEdit->setAcceptDrops(false); setAcceptDrops(true); //把所有action与对应的槽相连 connect(mui->action_open, SIGNAL(triggered()), this, SLOT(open())); connect(mui->action_save, SIGNAL(triggered()), this ,SLOT(save())); connect(mui->actionSave_As, SIGNAL(triggered()), this ,SLOT(saveAs())); connect(mui->action_close,SIGNAL(triggered()), this, SLOT(close())); connect(mui->action_quit, SIGNAL(triggered()), this, SLOT(quit())); //放到屏幕中间 int screenCenterX =(QDesktopWidget().screenGeometry().width()-geometry().width())/2; int screenCenterY =(QDesktopWidget().screenGeometry().height()-geometry().height())/2; //宽和高就用设计器中设置的吧 setGeometry(screenCenterX,screenCenterY,width(),height()); } /* 根据文件名读文本文件 */ void MainWindow::readFile(const QString &fileName){ mData->mFile.setFileName(fileName); if(!mData->mFile.open(QIODevice::ReadOnly|QIODevice::Text)) return; //怕文件太大,一行一行地读 mData->mStream.setDevice(&mData->mFile); QString line = mData->mStream.readLine(); while(not line.isNull()){ mData->mText.append(line).append("\n"); line = mData->mStream.readLine(); } //读完得关了它,最好一开始就写上,我在测试writeFile能否读text时没写后面的代码, //结果一关程序就把我的源码清空了2个才发现,悲剧啊... mData->mFile.close(); mui->textEdit->clear(); mui->textEdit->setText(mData->mText); } /* 根据文件名写文本文件 */ void MainWindow::writeFile(const QString &fileName){ mData->mFile.setFileName(fileName); if(not mData->mFile.open(QIODevice::WriteOnly|QIODevice::Truncate)) return;//can not write mData->mStream.setDevice(&mData->mFile); QStringList currentTextList = mui->textEdit->toPlainText().split("\n"); foreach(QString str,currentTextList){ mData->mStream << str << "\n"; } mData->mFile.close(); } void MainWindow::open(){ mData->mFileName = mui->mFileDialog->getOpenFileName(this,tr("Open File"),//这个对话框的标题 "/home/xiangjie/code/unix/T1/", tr("files(*.c *.cc *.cpp *.txt)"));//这里相当于是过滤器 readFile(mData->mFileName); } /* 保存 */ void MainWindow::save(){ if(mData->mFileName.isNull()) return; writeFile(mData->mFileName); } /* 另存为 */ void MainWindow::saveAs(){ mData->mFileName = mui->mFileDialog->getSaveFileName(this,tr("Save File"), "/home/xiangjie/code", tr("files(*.c *.cc *.cpp *.txt)")); save(); } /* 清空textEdit和fileName */ void MainWindow::close(){ mui->textEdit->clear(); mData->mFileName.clear(); } /* 关闭所有窗口 */ void MainWindow::quit(){ qApp->closeAllWindows(); } /* 拖放 */ void MainWindow::dragEnterEvent(QDragEnterEvent *event){ if(event->mimeData()->hasFormat("text/uri-list")) event->acceptProposedAction(); } void MainWindow::dropEvent(QDropEvent *event){ QList<QUrl> urls = event->mimeData()->urls(); if(urls.isEmpty()) return; QString fileName = urls.first().toLocalFile(); if(fileName.isEmpty()) return; readFile(fileName); setWindowTitle(tr("%1-%2").arg(fileName).arg(tr("Drag file"))); } MainWindow::~MainWindow() { }
main.cpp
#include <QtGui/QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
发表评论
-
mac无法debug
2019-09-23 17:36 253升级新的lldb,底层脚本用的py3,而qtcreator暂不 ... -
现有项目生成pro文件
2018-07-21 15:32 1274qmake -project -
QtCreator使用arm编译器
2014-04-18 16:19 1219构建工具链各种不和谐,心一狠,直接改最原始的配置文件 1.首 ... -
qtcreator c++11
2013-07-15 22:10 1381在.pro里面:QMAKE_CXXFLAGS += -std= ... -
qt webkit
2013-03-28 17:27 814arora是一个很不错的开源的浏览器,我说它不错并不见得它的性 ... -
qt profile
2012-05-29 17:04 5378这篇文章是我从360doc上转的,本来是要把转的url列出来的 ... -
QtConcurrent
2012-05-26 14:48 2015当我们想在一个或多个辅助线程执行的同时做一些后台处理且无须使用 ... -
QThreadPool
2012-05-23 22:24 2197#include<QThreadPool> ... -
用qtcreator但不用qt库
2012-04-17 10:48 1307pro file: QT -= core gui -
qtcreator缺少编码
2012-04-14 13:46 873将plugins/codecs复制到yourcreator/b ... -
QTableView显示tooltip与设置日志
2012-01-11 22:15 3667原文http://www.cppblog.com/biao/a ... -
Qt mysql相关
2011-11-28 23:44 1787sudo apt-get install mysql-serv ... -
Qt自定义事件
2011-08-31 14:48 5305先看下官方的文档:(google translation) Q ... -
QComboBox下拉item变灰
2011-07-21 10:10 1932qobject_cast<QStandardItemMo ... -
Qt国际化
2011-07-21 09:37 9651.先在.pro中加入一行:TRANSLATIONS = xx ... -
Qt读写xml
2011-07-20 10:49 6458test.xml <?xml version=&qu ... -
Qt多线程
2011-07-18 21:08 1449Qt中线程安全的类有QMutex,QMutexLocker,Q ... -
生产者与消费者
2011-07-16 09:42 2#include<iostream> #in ... -
Qt读写二进制文件
2011-07-11 22:11 5677DataStream.h #ifndef DATASTRE ... -
QItemDelegate
2011-07-09 10:57 1885.h #ifndef DIALOG_H #define ...
相关推荐
Qt提供了两种读写纯文本文件的基本方法,一种是用QFile类的IODevice读写功能直接进行读写,另一种是利用QFile和QTextStream结合起来,用流(Stream)的方法进行文件读写。 实例samp7_1演示了这两种方法读写文本文件...
2.读取文本文件,显示到桌面控件中; 3.读取的文件使用多线程处理,不影响显示界面正常操作; 4.读取过来的文件如有修改,需要保存修改部分; 5.读、写文件需要显示处理进度; 6.增加一个列表,用于展示文本文件的...
在Qt框架中,读写`.ini`配置文件是常见的任务,尤其在开发桌面应用程序时,这些文件用于存储用户的个性化设置或应用的配置信息。本文将详细介绍如何使用Qt库中的`QSettings`类来处理`.ini`文件,以及解决中文字符串...
在Qt框架中,进行文本文件(如txt)的读写操作是常见的任务,这涉及到对文件系统的操作和数据流的处理。以下将详细介绍Qt中如何实现txt文件的选择、读取和写入。 首先,Qt提供了QFile类来处理文件操作,如打开、...
Qt支持多种文件操作类,如`QFile`用于文件的基本操作,`QTextStream`用于文本的读写,特别适合处理包含中文字符的文件。`QTextStream`能自动处理编码问题,确保中文字符不被错误解析。 1. **中文文本读取**: - ...
在本主题中,我们将聚焦于Qt如何实现对Microsoft Office的.docx文件进行读写操作。 首先,理解.docx文件格式至关重要。.docx文件是基于Open XML标准的,实际上是一个压缩的ZIP文件,包含XML文档、样式表、图像和...
总结起来,Qt 5.12.6在Android上的本地文件读写涉及了Android权限管理、Qt的文件操作类以及路径管理。通过正确地申请权限并使用Qt提供的API,开发者可以在Android设备上创建、读取和写入文件,实现功能丰富的移动...
在本文中,我们将深入探讨如何使用Qt库进行GUI界面下的二进制文件读写操作,同时结合源码分析、工程打包以及测试实例来全面理解这一主题。Qt是一个跨平台的应用程序开发框架,广泛用于创建图形用户界面和其他软件。...
在QT中处理文件读写是非常基础且重要的功能,对于任何需要与本地文件系统交互的应用程序来说都必不可少。下面我们将深入探讨QT如何进行文件读写操作。 一、QT中的文件读取 在QT中,我们可以使用`QFile`类来操作...
2. 使用QTextStream进行流式读写,这样可以方便地处理文本数据。创建一个QTextStream对象,传入已打开的QFile对象。 3. 遍历文件,找到要修改的行。可以使用`atEnd()`检查是否到达文件末尾,`next()`或`readLine()`...
在这个文件中,我们可能会定义一个继承自`QWidget`的类,用于构建用户交互界面,比如设置串口选择下拉框、波特率选择器、数据位、校验位、停止位等控件,并且包含打开、关闭串口的按钮,以及显示接收数据的文本区域...
在这个场景中,我们关注的是如何在Visual Studio 2008中利用Qt来读取和写入文本文件。尽管Visual Studio 2008本身并不直接支持Qt,但可以通过安装第三方插件如QTVisualStudioTools来实现对Qt项目的集成。 首先,让...
在处理文件读写时,QT提供了丰富的类和方法,使得开发者能够方便地操作文件,包括读取和写入文本以及二进制数据。本文将深入探讨如何使用QT中的QString、QFile和QTextStream类来处理中文文件。 首先,QString是QT中...
在QT中,我们可以利用QFile类来处理文件读写操作。QFile提供了打开、关闭、读取和写入文件的方法。例如,使用`open()`函数打开文件,`read()`和`write()`函数读写数据,`close()`函数关闭文件。对于HEX文件,我们...
在Qt环境下实现文本文件的解压缩功能,主要是利用Qt库提供的I/O操作和第三方压缩库。Qt自身并不直接支持文件的压缩与解压缩,但我们可以借助于其他开源库,如zlib、minizip或者自己编写算法来实现。在这个案例中,...
在本文中,我们将深入探讨如何使用Qt5.8框架来打开指定路径的TXT文件,并进行读写操作。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动和嵌入式平台。Qt5.8是其一个重要的版本,提供了丰富的功能和优化。 ...
总结起来,Qt通过QFile、QDir、QTextStream等类提供了强大且灵活的文件读写功能。开发者可以根据具体需求选择合适的方法,同时注意错误处理和性能优化,以实现高效且可靠的文件操作。在实际项目中,合理利用这些工具...
它可以用来读写文本文件,自动处理换行、缩进等。通过`QTextStream(file)`构造一个与文件关联的流,然后使用`操作符输出文本,使用`>>`操作符读取文本。 5. **错误处理**: 在进行文件操作时,应始终检查是否成功。`...
以上就是使用QT进行XML文件操作的基本知识点。在实际项目中,可能还需要结合其他类,如`QXmlStreamReader`和`QXmlStreamWriter`进行流式处理,或者使用`QDomNode::childNodes()`获取子节点列表等,以实现更复杂的XML...
本文将基于给定的标题“WBDC.rar_c text word count_单词检索_文本检索 visual_文本文件读写”和描述,深入探讨相关知识点,包括C语言实现文本文件的读写、单词计数和检索,以及可视化的实现。 首先,让我们关注...