Qt qwidget嵌入ppt

Qt 使用QAxWidget操作 ppt 很久以前实现的功能,现在突然要使用了,怕忘记记录一下 效果: 弹出一个ppt窗口进行幻灯片播放 1. pro : 增加 QT+=axcontainer 2. 声明一个 QAxObject *ppt_dsoframer; 构造函数里面实例化 ppt_dsoframer=new QAxObject(this); ppt_state=ppt_dsoframer->se... 阅读详情

1. pro :  增加  QT+=axcontainer

2.打开ppt

   QAxObject *ppt_dsoframer;
   ppt_dsoframer=new QAxObject(this);
   bool ppt_state=ppt_dsoframer->setControl("Powerpoint.Application");
   if(!ppt_state)//连接控件
          QMessageBox::critical(this, "Error", "no office ppt!");

     QString filePath = QFileDialog::getOpenFileName(0, "Open ppt", QString(), "*.pptx *ppt;; ");
      if (filePath.isEmpty())
             return;
     ppt_dsoframer->dynamicCall("SetVisible(bool)",true); //设置窗口显示
     ppt_dsoframer->querySubObject("Presentations()")->dynamicCall("Open(string)",filePath); //选择打开ppt的路径
     //放映这个剪辑
     ppt_dsoframer->querySubObject("ActivePresentation")->querySubObject("SlideShowSettings")->dynamicCall("Run()");

3.嵌入QWidget 

     //嵌入QWidget
     int index = filePath.lastIndexOf("/");
     QString filename =filePath.mid(index+1,filePath.length());
     QList<HWND> hwndList = GetWindowHandleListByPID(filename);//根据PPT名字获取进程ID号
     QWindow *pWin = QWindow::fromWinId((WId)hwndList.at(0));
     pWin->setGeometry(0,0,this->width(),this->height());
     QWidget *widget = QWidget::createWindowContainer(pWin);
     widget->setMouseTracking(true);//鼠标跟踪
     widget->setParent(this);
QList<HWND> Widget::GetWindowHandleListByPID(QString filename)//通过进程标题获取窗口进程ID
{
    QString str_title = filename+" - WPS Office";//进程标题固定格式
    QList<HWND> HWND_list;
    HWND h = ::GetTopWindow(0);
    while (h)
    {
        DWORD pid = 0;
        DWORD dwTheardId = GetWindowThreadProcessId(h, &pid);

        if (dwTheardId != 0)
        {
            TCHAR *name=new TCHAR[MAX_PATH];
            //::GetClassName(h, name, 255);
            ::GetWindowTextW(h, name, 255);
            QString title = QString :: fromStdWString(name);
            qDebug()<<title;//pp.ppt - WPS Office"  "WPS演示 幻灯片放映 - [pp.ppt]
            if(title == str_title)
            {
                HWND_list.append(h);
            }
        }
        h = ::GetNextWindow(h, GW_HWNDNEXT);
    }
    return HWND_list;//最终只会返回一个进程ID
}

4.

#include <windows.h>
#include <QAxObject>
#include <QMessageBox>
#include <QFileDialog>
#include <QDebug>
#include <QWindow>

5.运行结果-成功嵌入,并可以正常操作ppt

Qt窗口内嵌Word,PPT,Excel Qt窗口内嵌Word,PPT,Excel 思路:不再使用QAxWidget来打开Word,PPT,Excel,直接用对应的应用程序打开,找到打开的窗口句柄,将要将之显示的窗口设置为其父窗口。 void WaitForOpenWord() { if (!m_strSaveFileName.isEmpty()) { //使用qt的接口用资源管理器打开这个word bool b = QDesktopServices::openU 阅读详情

相关推荐

QML与QWidget混合开发:实现高效UI集成的实战指南

本文详细介绍了QML与QWidget混合开发的实战指南,通过QQuickWidget实现两种UI技术的无缝集成。文章涵盖核心原理、环境准备、性能优化及常见问题解决方案,帮助开发者在现代化QML界面中嵌入QWidget控件,如PPT展示等复杂功能,提升开发效率与用户体验。

weixin_29189003的博客 117

qword_qword_qwordqt_qtword_word_QT_

QT word 开发,对office word 进行读写和储存

Qt5开发学习总结(三)——窗口部件的使用(QWidget和QDialog)

窗口部件 QT提供的默认基类只有QMainWindow、QWidget、和QDialog这三种,这三种窗体也是用的最多的,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,而他们全部继承自QWidget。不仅如此,所以的窗口部件都继承自QWidget,继承关系如图所示。 1.基础窗口部件QWidget QWidget类是所有用户界面对象的基类,被

. 5万+

Qt利用QProcess嵌入word、excel、ppt

Qt利用QProcess嵌入word、excel、ppt

daqinzl的专栏 1675

QObject怎样把ppt嵌入qt widget里显示,并控制自动播放

如题,有谁用过,求指教

flower1113的博客 3646

# Qt QAxObject 操作 ActiveX com组件

使用ApplicationName的话可以到QtCreator的designer中拖拽一个QAxObject到窗口。- 程序名可以使用ApplicationName.Application或者Uuid。- 找不到想要的控件的, 可以自己到注册表查询Uuid。- 起因是自己需要写一个Qt操作office word文档的类,- 大家可以对支持ActiveX的程序查程序API文档后对号入座。再右键添加控件, 就可以看到支持的控件。总结出了QAxObject相关方法的使用模板。

wo871427008的博客 840

QML 中播放PPT文件

效果: 一,思路 MFC 操作PPT,然年将MFC封装成dll 供Qt使用(https://blog.csdn.net/qq21497936/article/details/95329108) Qt将mfc中的句柄,加载到QWidget中 QML 通过QQuickWidget ,将QWidget 加载到QMl中(https://blog.csdn.net/weixin_384166...

qthello 1409

QtQWidget嵌入Qml文件以及如何交互

项目场景: 工作中,有的老版本代码是用QtWidgets来实现的,在后期的OTA实现中,由于种种原因,比如用qml来实现更方便等原因,某些功能的开发确用qml语言来实现,这就涉及到了QWidget与Qml文件的相互嵌入,以及交互问题。 问题描述: 笔者遇到的需求是,做一个语音助手,窗口会实时显示自己说的话,以及一些对话内容,比如听故事界面,要实现一种无边框,圆角的对话框: 按照常规做法,因为代码是QtWidget框架写的,所以我应该也用QWidgets来实现就好了,但是考虑到也写效果的实现和最近一直在用

一个老菜鸟的学习分享 1万+

qtqwidget 嵌入 qml

qtqwidget 嵌入 qml

网瘾少年丶的博客 1886

Qt Office 集成

Qt 使用dsoframer.ocx 实现Ofiice组件中 Word、Excel、PPT 嵌入Qt

QAxWidget打开Office文件及pdf

配合博客:http://blog.csdn.net/zy19940906/article/details/61426429

QWidget嵌入QML

近年来,QMl被Qt官方夸得天花乱坠,作为一枚传统的Qter,习惯了用QWidget,毋容置疑的是qml做出来的页面确实炫酷,那么如何在传统的qwidget嵌入qml呢?倒腾了一上午,终于摸清了他的套路 qt版本:5.12 1.首先创建一个传统的QApplication 应用程序 2.添加新文件选择QMLFILE 3.编写qml import QtQuick 2.0 Item { signal signal2Widget signal signal2qml .

sinat_33762356的博客 2837

QT —— QWidget(1)

QT —— QWidget(1)

qq_67693066的博客 1869

QtQt中QMainWindow、QWidget、QDialog的区别

文章目录前言特点分述QMainWindowQWidgeQDialog区别总结选用原则参考和引用 前言 熟悉Qt的同学都知道,QMainWindow、QWidget、QDialog是Qt中常用的窗口,我们在新建Qt Widgets项目进行类信息选择时会碰到它们,那么他们之间到底有什么区别和联系呢? QWidget继承于QObject和QPaintDevice,QDialog和QMainWindow则...

qq_41684134的博客 1万+

qwidget嵌入qml界面

说明 在我们日常使用qt/C++的界面开发过程中,通常想要自定义、实现某些特定的非常美观、炫酷界面,使用qwidget的方式是比较麻烦且复杂的,如果滑动、动画等操作,qwidget需要重写事件,且还需要定义滑动的逻辑。 但是,Qt Quick 使用 QML 构建的一套类库几乎完美补足了此问题,如果只是做界面,使用qml还是非常完美的。QML 是一种基于 JavaScript 的声明式脚本语言,其性能相对C++来说性能还是稍微低了点,不过qt5.2之后版本对qml引擎进行了优化,性能相对来说,还是拉近了很多。

weixin_42887343的博客 7429

QT学习总结之QWidget详解

QWidget类是所有用户界面对象的基类。

qq_27726087的博客 1万+

24. 在QML界面中嵌入QWidget窗口

目前QT官方主推的界面开发方式是采用QML进行界面设计,但在QML未流行之前,很多的项目都是采用QWidget开发的,把之前的代码全部转换为QML代码显然工作量非常大,如果能将QWidget窗口嵌入到QML界面中,那么开发效率将提高很多,且QML无法实现的功能也能借助于QWidget框架进行实现。

山间点烟雨 5892

QML界面嵌入QWidget使用

Qt4使用方法 项目文件添加QT += declarative QDeclarativeView *view = new QDeclarativeView; view->setSource(QUrl::fromLocalFile("file.qml")); view->show(); Qt5使用方法 项目文件添加QT += quickwidgets QQuickWidget ...

Qt君 3249
上一篇: Android Studio FFMPEG 入门
下一篇: Qt 远程开关机 WakeOnLAN 重启
小小陌陌
博客等级 码龄16年 9粉丝 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值