QT中文件的操作

QT学习之路56:

     QIODevice:查看Qt Assistant,它是QT中所有IO设备的基类接口类,它提供一般实现和支持读写数据块设备的抽象接口,如QFile,QBuffer,QTcpSocket。它是抽象的,不能被实例化,但使用它定义的接口来提供独立设备的IO特征。在访问设备之前,open()必须设置正确的OpenMode,如ReadOnly,ReadWrite,也能通过write(),putChar()来写。read(),readLine(),readAll()类读。

     QIODevice区别2种类型的设备:随机访问设备和顺序访问设备。随机访问设备支持从任意位置访问,也可以通过seek()重新定位文件指针,pos()获得当前文件指针。QFile,QBuffer是这种类型的设备。顺序访问设备不支持从任意位置访问设备,数据只能访问一遍。即从第一个字节开始到最后一个字节。顺序访问设备不能使用pos()函数和size()函数。QTcpSocket和QProcess是这种类型的器件。。。。。。。。。。。。后面的内容没有翻译。

    文件的访问方式:QDataStream进行二进制方式访问和QTextStream进行文本方式访问。另外QT还提供了QDir和QFileInfo两个类来处理文件夹事务和查看文件信息。

 

 

 

自己写的打开一个text file ,然后显示在textEdit中:

源代码:

 

ex::ex(QWidget *parent, Qt::WFlags flags)
 : QWidget(parent, flags)

{

ui.setupUi(this);
 m_pLabel = new QLabel("Directory:");
 m_pLine  = new QLineEdit;
 m_pPushBtn = new QPushButton("Open");
 connect(m_pPushBtn,SIGNAL(clicked()),this,SLOT(open()));
 m_pText = new QTextEdit(this);
   
 QHBoxLayout *pHLayout = new QHBoxLayout;
 pHLayout->addWidget(m_pLabel);
 pHLayout->addWidget(m_pLine);
 pHLayout->addWidget(m_pPushBtn);
 QVBoxLayout *pVLayout = new QVBoxLayout;
 pVLayout->addLayout(pHLayout);
 pVLayout->addWidget(m_pText);
 this->setLayout(pVLayout);

}

 

void ex::open()
{
 QString fileName = QFileDialog::getOpenFileName(this,tr("Open a File"),".",tr("Text File(*.txt);;pdf file(*.pdf)"));
 if(fileName.length() == 0)
  QMessageBox::information(this,tr("Text Files"),tr("You have not open any file"));
 else
 {
        QDir *pDir = new QDir(".");
  QString fileDir = pDir->filePath(fileName);
  m_pLine->setText(fileDir);
  QFile file(fileName);
  if (!file.open(QIODevice::ReadWrite)) 
   return;
  QTextStream out(&file);
  while(!file.atEnd())
  {
            m_pText->setText(out.readAll());
  }
  
 }
}


 

 

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值