实现QT打开Word文档

通过QT实现点击按钮打开Word文档,需要用到QProcess,在程序中加入#include <QProcess>。

代码:

.h文件

#ifndef SIDEBAR_H
#define SIDEBAR_H

#include <QWidget>
#include <QProcess>
#include <QFileInfo>

namespace Ui {
class SideBar;
}

class SideBar : public QWidget
{
    Q_OBJECT

public:
    explicit SideBar(QWidget *parent = nullptr);
    ~SideBar();


private slots:

    void on_usermanual_clicked();

    void OnFinishProc(int, QProcess::ExitStatus);


private:
    Ui::SideBar *ui;
    QString m_filePath;

};

#endif // SIDEBAR_H

.cpp文件

#include "SideBar.h"
#include "ui_SideBar.h"

#include <QProcess>
#include <QMessageBox>

SideBar::SideBar(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SideBar)
{
    ui->setupUi(this);
    //文件路径
    m_filePath = "D:/QTproject/SAR/code/resources/userguide.docx";
}

SideBar::~SideBar()
{
    delete ui;
}

void SideBar::on_usermanual_clicked()
{
    QFileInfo fileInfo(m_filePath);
    if (!fileInfo.exists())
    {
        // 文件不存在,提示用户
        QMessageBox::warning(this, "File not found", "The file 'userguide.docx' was not found.");
    }
    else
    {
        QString program = "\"C:\\Program Files\\Microsoft Office\\root\\Office16\\WINWORD.EXE\"";
        QProcess *proc = new QProcess(this);
        QStringList list;
        list<<QString(m_filePath);
        proc->start(program,list);
        connect(proc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(OnFinishProc(int, QProcess::ExitStatus)));

    }

}

void SideBar::OnFinishProc(int, QProcess::ExitStatus)
{
    QProcess * proc = (QProcess *)sender();
    delete proc;

}

1.word文档通过WINWORD.EXE打开,在QProcess::start中要写明其路径;

2.#include <QFileInfo> 用来判断文件路径是否存在。

3.当用户关闭word文档时,WINWORD.EXE进程就结束了。但是proc变量仍然存在,其仍然占据一块内存。当WINWORD.EXE进程结束时,proc会发出一个信号finished。利用这个信号,触发槽函数OnFinishProc,就可以释放proc。

4.WINWORD.EXE的路径中有空格,需要加上“\”。

参考文章:Qt利用QProcess启动进程实例(打开一个word文档)_qprocess打开文件_金色熊族的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/weixin_55735677/article/details/130726246