#include "documentwidget.h"
#include "ui_documentwidget.h"
#include <QFileSystemModel>
#include <QDebug>
#include <QMessageBox>
#include <QFileDialog>
DocumentWidget::DocumentWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::DocumentWidget)
{
ui->setupUi(this);
loadFile();
ui->widget->hide();
ui->pushButton->hide();
}
DocumentWidget::~DocumentWidget()
{
delete ui;
}
//加载指定目录下的文件
void DocumentWidget::loadFile()
{
QFileSystemModel *model = new QFileSystemModel();
model->setRootPath("d:/");
QStringList nameFilter;
nameFilter << "*.doc" << "*.docx" << "*.pdf" << "*.xlsx";
model->setNameFilterDisables(false);
model->setNameFilters(nameFilter);
ui->treeView->setModel(model);
ui->treeView->setRootIndex(model->index("D:/Mydocument"));
}
void DocumentWidget::openExcel(QString &filename)
{
qDebug() << __FUNCTION__ << filename;
ui->widget->hide();
ui->frame_doc->show();
closeDocContent();
m_DocContent = new QAxWidget("Excel.Application", ui->frame_doc);
m_DocContent->dynamicCall("SetVisible (bool Visible)","false");//不显示窗体
m_DocContent->setProperty("DisplayAlerts", false);
auto rect = ui->frame_doc->geometry();
m_DocContent->setGeometry(rect);
m_DocContent->setControl(filename);
m_DocContent->show();
}
void DocumentWidget::openWord(QString &fileName)
{
qDebug() << __FUNCTION__ << fileName;
ui->widget->hide();
ui->frame_doc->show();
closeDocContent();
m_DocContent = new QAxWidget("Word.Application", ui->frame_doc);
m_DocContent->dynamicCall("SetVisible (bool Visible)", "false");
m_DocContent->setProperty("DisplayAlerts", false);
auto rect = ui->frame_doc->geometry();
m_DocContent->setGeometry(rect);
m_DocContent->setControl(fileName);
m_DocContent->show();
}
void DocumentWidget::openPdf(QString &filename)
{
qDebug() << __FUNCTION__ << filename;
ui->widget->show();
ui->frame_doc->hide();
closeDocContent();
m_DocContent = new QAxWidget(this);
if(!m_DocContent->setControl("Adobe PDF Reader"))
QMessageBox::critical(this, "Error", "没有安装pdf!");
ui->gridLayout->addWidget(m_DocContent);
m_DocContent->dynamicCall(
"LoadFile(const QString&)",
filename);
}
void DocumentWidget::closeDocContent()
{
if(this->m_DocContent)
{
m_DocContent->close();
m_DocContent->clear();
delete m_DocContent;
m_DocContent = nullptr;
}
}
void DocumentWidget::on_treeView_clicked(const QModelIndex &index)
{
if(!index.isValid())
{
return;
}
QString str;
str = QStringLiteral("当前选中:%1\nrow:%2,column:%3\n").arg(index.data().toString())
.arg(index.row()).arg(index.column());
qDebug() << __FUNCTION__ << str;
//QString fileName = "D:/Mydocument/"+ index.data().toString();
QString fileName = "";
QModelIndex tmpIndex = index;
while(1)
{
if (tmpIndex.data().toString().contains("(D:)"))
{
fileName = "D:" + fileName;
}
else
{
fileName = tmpIndex.data().toString() + fileName;
}
tmpIndex = tmpIndex.parent();
if (tmpIndex.data().toString().isEmpty())
break;
fileName = "/" + fileName;
}
qDebug() << __FUNCTION__ << fileName;
if(fileName.endsWith(".xlsx"))
{
openExcel(fileName);;
}
else if(fileName.endsWith(".docx") || fileName.endsWith(".doc"))
{
openWord(fileName);;
}
else if(fileName.endsWith(".pdf"))
{
openPdf(fileName);;
}
}
void DocumentWidget::on_pushButton_clicked()
{
QFileDialog dialog;
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setViewMode(QFileDialog::Detail);
dialog.setOption(QFileDialog::ReadOnly, true);
dialog.setWindowTitle(QString("QAXwidget操作文件"));
dialog.setDirectory(QString("./"));
dialog.setNameFilter(QString("所有文件(*.*);;excel(*.xlsx);;word(*.docx *.doc);;pdf(*.pdf)"));
if (dialog.exec())
{
QStringList files = dialog.selectedFiles();
for(auto filename : files)
{
if(filename.endsWith(".xlsx"))
{
this->openExcel(filename);
}
else if(filename.endsWith(".docx") || filename.endsWith(".doc"))
{
this->openWord(filename);
}
else if(filename.endsWith(".pdf"))
{
this->openPdf(filename);
}
}
}
}
Qt5.8 Qtreeview目录树 QAxWidget打开word、pdf文件
2星 需积分: 46 135 浏览量
2018-11-28
16:12:46
上传
评论 1
收藏 7KB ZIP 举报
cyg19860205
- 粉丝: 8
- 资源: 10
最新资源
- AIS2024 valid
- 最入门的爬虫代码 python.docx
- 爬虫零基础入门-爬取天气预报.pdf
- 最通俗易懂的 MongoDB 非结构化文档存储数据库教程.zip
- 以mongodb为数据库的订单物流小项目.zip
- 腾讯云-mongodb数据库, 项目部署.zip
- 腾讯 APIJSON 的 MongoDB 数据库插件.zip
- 理解非关系型数据库和关系型数据库的区别.zip
- 操作简单的Mongodb网页web管理工具,基于Spring Boot2.0支持mongodb集群.zip
- tms-mongodb-web,提供访问mongodb数据的REST API和可灵活扩展的mongodb web 客户端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈