- 浏览: 718893 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1042)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (52)
- 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 (33)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (64)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
最新评论
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 228升级新的lldb,底层脚本用的py3,而qtcreator暂不 ... -
现有项目生成pro文件
2018-07-21 15:32 1225qmake -project -
QtCreator使用arm编译器
2014-04-18 16:19 1185构建工具链各种不和谐,心一狠,直接改最原始的配置文件 1.首 ... -
qtcreator c++11
2013-07-15 22:10 846在.pro里面:QMAKE_CXXFLAGS += -std= ... -
qt webkit
2013-03-28 17:27 768arora是一个很不错的开源的浏览器,我说它不错并不见得它的性 ... -
qt profile
2012-05-29 17:04 5347这篇文章是我从360doc上转的,本来是要把转的url列出来的 ... -
QtConcurrent
2012-05-26 14:48 1970当我们想在一个或多个辅助线程执行的同时做一些后台处理且无须使用 ... -
QThreadPool
2012-05-23 22:24 2161#include<QThreadPool> ... -
用qtcreator但不用qt库
2012-04-17 10:48 1247pro file: QT -= core gui -
qtcreator缺少编码
2012-04-14 13:46 842将plugins/codecs复制到yourcreator/b ... -
QTableView显示tooltip与设置日志
2012-01-11 22:15 3606原文http://www.cppblog.com/biao/a ... -
Qt mysql相关
2011-11-28 23:44 1760sudo apt-get install mysql-serv ... -
Qt自定义事件
2011-08-31 14:48 5264先看下官方的文档:(google translation) Q ... -
QComboBox下拉item变灰
2011-07-21 10:10 1859qobject_cast<QStandardItemMo ... -
Qt国际化
2011-07-21 09:37 9151.先在.pro中加入一行:TRANSLATIONS = xx ... -
Qt读写xml
2011-07-20 10:49 6391test.xml <?xml version=&qu ... -
Qt多线程
2011-07-18 21:08 1415Qt中线程安全的类有QMutex,QMutexLocker,Q ... -
生产者与消费者
2011-07-16 09:42 2#include<iostream> #in ... -
Qt读写二进制文件
2011-07-11 22:11 5630DataStream.h #ifndef DATASTRE ... -
QItemDelegate
2011-07-09 10:57 1844.h #ifndef DIALOG_H #define ...
相关推荐
Qt提供了两种读写纯文本文件的基本方法,一种是用QFile类的IODevice读写功能直接进行读写,另一种是利用QFile和QTextStream结合起来,用流(Stream)的方法进行文件读写。 实例samp7_1演示了这两种方法读写文本文件...
使用qt对中文文本进行读写并显示在主窗口视图中,提供逐行读写和一次读完两种选择
2.读取文本文件,显示到桌面控件中; 3.读取的文件使用多线程处理,不影响显示界面正常操作; 4.读取过来的文件如有修改,需要保存修改部分; 5.读、写文件需要显示处理进度; 6.增加一个列表,用于展示文本文件的...
qt 在读写中文的时候经常会出现乱码格式,这是令人很头痛的一件事,文件中程序经过真机测试是正常显示了,大家如果有这样的问题后不妨参考一下,希望对你有帮助, 同时希望你能把开源的东西共享给大家
QT4最基本的文本文件保存与读取例程源代码,学习最基本的QFileDialog的使用,txt文件的读写.
除了文本文件之外,其他需要按照一定的格式定义读写的文件都称为二进制文件。每种格式的二进制文件都有自己的格式定义,写入数据时按照一定的顺序写入,读出时也按照相应的顺序读出。例如地球物理中常用的SEG-Y格式...
使用QFileDialog 和 QFile 以及 TextEdit 实现的文本操作 这个界面实现的就是按一个BUTTON键打开文档,并且显示其内容到TextEdit上,按另一个BUTTON键则实现另存为功能,即把 TextEdit上的内容写到新建的或者已有的...
资源中包括《HEX文件格式解析.pdf》文章,使用QT实现HEX文件生成、HEX文件解析、文件读写及文件拼接功能的工程源码,因项目开发写的工程,可以直接使用,也可作为HEX文件操作参考。
Qt5开发及实例,实例CH901,建立基于控制台工程,使用QFile类读写文本文件。 实现步骤如下。 (1)建立一个工程。选择“文件”→“新建文件或项目...”菜单项,在弹出的对话框中选择“项目”组下的“Application”→...
Qt5开发及实例,实例CH902,建立基于控制台的工程,使用QTextStream类读写文本文件。 (1)源文件“main.cpp”的具体实现代码如下: 其中, (a) if(data.open(QFile::WriteOnly|QFile::Truncate)):参数QFile::...
按行读取指定目录下的txt文件,累计读取10行后将这10行数据写入到另外一个指定路径下的txt中;参考此demo可实现文本复制;
//写尾并把缓存写入文件 int WriteReturn_And_ToFile(const char *szApiName,int iReturn); //清空缓冲区日志 int ClearBuff(); //缓冲区日志写入文件后清空 int BuffToFile(); //直接写入...
二进制文件存储方式比较方便,文本小,保密效果好 定义一个数据结构并实现相关操作 使用QDataStream进行读写操做 数据结构 #include struct AccountInfo { // 数据 QString Account; QString LogPasswd; // 初始...
基于最新的Qt5.0.1的学习书籍,非常适合QT5的入门学习。 适合了解QT5与QT4区别的新手。 文章结构如下: 1 序 ...37 文本文件读写 38 存储容器 39 遍历容器 40 隐式数据共享 41 model/view 架构
7.3 文本文件读写 75 8 Socket通信 76 8.1 TCP/IP 77 服务器端 77 客户端 79 8.2 UDP 81 广播 82 组播 82 8.3 TCP/IP 和 UDP的区别 83 9 多线程 83 9.1 线程介绍 84 9.2 多线程的使用 87 9.3 使用线程绘图 89 10 ...
37. 文本文件读写 38. 存储容器 39. 遍历容器 40. 隐式数据共享 41. model/view 架构 42. QListWidget、QTreeWidget 和 QTableWidget 43. QStringListModel 44. QFileSystemModel 45. 模型 46. 视图和委托 47. 视图...
python读写mdb、读excel的ui界面的完整源代码、mdb测试文件和excel测试文件和exe文件,使用Qt Designer产生ui文件,源代码用到了多线程、自定义信号和槽(slot)函数,两个文件打开对话框用来选择mdb文件和excel文件,...
37. 文本文件读写 38. 存储容器 39. 遍历容器 40. 隐式数据共享 41. model/view 架构 42. QListWidget、QTreeWidget 和 QTableWidget 43. QStringListModel 44. QFileSystemModel 45. 模型 46. 视图和委托 47. 视图...