本文详细的介绍了QAxWidget控件的各种操作,例如:新建界面使用示例显示网页显示pdf显示Off源文件详细说明其它文章等等操作。

        ActiveX控件是一种可重用的二进制组件,用于在Windows操作系统上提供特定的功能和服务。以下是一些常见的ActiveX控件的示例:1. Internet Explorer Web Browser Control:用于在应用程序中嵌入和显示Web浏览器。2. Microsoft Office组件(如Word、Excel、PowerPoint):用于在应用程序中嵌入和操作Office文档。3. Windows Media Player Control:用于在应用程序中嵌入和播放音频和视频文件。4. Adobe Flash Player Control:用于在应用程序中嵌入和播放Flash动画和视频。5. Crystal Reports Viewer Control:用于在应用程序中显示和打印Crystal Reports报表6. Windows Common Controls(如TreeView、ListView、ProgressBar):用于在应用程序中创建常见的用户界面控件。7. Microsoft DataGrid Control:用于在应用程序中显示和编辑数据表格。8. Microsoft Windows Image Acquisition Control:用于在应用程序中获取和处理图像。9. Microsoft Windows Media Encoder Control:用于在应用程序中进行音频和视频编码。

        本系列QT全面详解文章目前共有三十八篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。

QT QAxWidget控件 使用详解-LMLPHP

QT QAxWidget控件 使用详解目录

1 新建界面

2 使用示例

3 显示网页

4 显示pdf

5 显示Off

6 源文件

7 详细说明

8 其它文章


1 新建界面

QT QAxWidget控件 使用详解-LMLPHP

2 使用示例

//    ui->axWidget->setControl("{8856F961-340A-11D0-A96B-00C04FD705A2}");
//    ui->axWidget->dynamicCall("MethodName", "123", "hello");
//    QVariant value = ui->axWidget->dynamicCall("PropertyName");

3 显示网页

    ui->axWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}"));//注册组件ID
    ui->axWidget->setProperty("DisplayAlerts",false);//不显示警告信息
    ui->axWidget->setProperty("DisplayScrollBars",true);//不显示滚动条
    QString webstr=QString("www.baidu.com");//设置要打开的网页
    ui->axWidget->dynamicCall("Navigate(const QString&)",webstr);//显示网页

4 显示pdf

//    QString msFilePath;
//    msFilePath = "D:/t.pdf";

//    mpAxWidgetPdf = new QAxWidget("AcroPDF.PDF", this->ui->widget);//Excel.Application //Adobe Acrobat Reader
//    mpAxWidgetOff = new QAxWidget("Word.Application", this->ui->widget_2);

//    // 创建一个QAxWidget对象,并设置其控制为Excel.Application
//    // 注释中提到不显示窗体,设置DisplayAlerts为false
//    mpAxWidgetPdf->dynamicCall("SetVisible (bool Visible)", "false");
//    mpAxWidgetPdf->setProperty("DisplayAlerts", true);
//    auto rect = ui->widget->geometry();
//    mpAxWidgetPdf->setGeometry(rect);
//    mpAxWidgetPdf->setControl(msFilePath);
//    mpAxWidgetPdf->show();

5 显示Off

//    // 创建一个QAxWidget对象,并设置其控制为Word.Application
//    // 注释中提到不显示窗体,设置DisplayAlerts为true
//    mpAxWidgetOff->dynamicCall("SetVisible (bool Visible)", "false");
//    mpAxWidgetOff->setProperty("DisplayAlerts", true);
//    rect = this->ui->widget_2->geometry();
//    mpAxWidgetOff->setGeometry(rect);
//    mpAxWidgetOff->setControl(msFilePath);
//    mpAxWidgetOff->show();

6 源文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QAxWidget>

//加入GBK申明,否则中文乱码 全局使用GBK文件操作因为有中文所以使用
#pragma execution_character_set("utf-8")

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

    QString Title;
    QString Version;
    QString BlogText;

    QAxWidget* mpAxWidgetPdf;
    QAxWidget* mpAxWidgetOff;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QVariant>
//#include "office.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    Title = "QT QAxWidget  CSDN 双子座断点 ";
    Version = "V 1.0 ";
    BlogText = "https://blog.csdn.net/qq_37529913?type=lately/";
    setWindowTitle(Title + Version + BlogText);

//    ui->axWidget->setControl("{8856F961-340A-11D0-A96B-00C04FD705A2}");
//    ui->axWidget->dynamicCall("MethodName", "123", "hello");
//    QVariant value = ui->axWidget->dynamicCall("PropertyName");

//    qDebug() << value;


    ui->axWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}"));//注册组件ID
    ui->axWidget->setProperty("DisplayAlerts",false);//不显示警告信息
    ui->axWidget->setProperty("DisplayScrollBars",true);//不显示滚动条
    QString webstr=QString("www.baidu.com");//设置要打开的网页
    ui->axWidget->dynamicCall("Navigate(const QString&)",webstr);//显示网页

//    QString msFilePath;
//    msFilePath = "D:/t.pdf";

//    mpAxWidgetPdf = new QAxWidget("AcroPDF.PDF", this->ui->widget);//Excel.Application //Adobe Acrobat Reader
//    mpAxWidgetOff = new QAxWidget("Word.Application", this->ui->widget_2);

//    // 创建一个QAxWidget对象,并设置其控制为Excel.Application
//    // 注释中提到不显示窗体,设置DisplayAlerts为false
//    mpAxWidgetPdf->dynamicCall("SetVisible (bool Visible)", "false");
//    mpAxWidgetPdf->setProperty("DisplayAlerts", true);
//    auto rect = ui->widget->geometry();
//    mpAxWidgetPdf->setGeometry(rect);
//    mpAxWidgetPdf->setControl(msFilePath);
//    mpAxWidgetPdf->show();



//    // 创建一个QAxWidget对象,并设置其控制为Word.Application
//    // 注释中提到不显示窗体,设置DisplayAlerts为true
//    mpAxWidgetOff->dynamicCall("SetVisible (bool Visible)", "false");
//    mpAxWidgetOff->setProperty("DisplayAlerts", true);
//    rect = this->ui->widget_2->geometry();
//    mpAxWidgetOff->setGeometry(rect);
//    mpAxWidgetOff->setControl(msFilePath);
//    mpAxWidgetOff->show();




}

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

7 详细说明

    因为博主没有安装组件所以会失败,暂时没有涉及到这个的业务工作所以没有深入展开研究下去,把实现代码贴出来供参考

QT QAxWidget控件 使用详解-LMLPHP

1. QVariant(Invalid):这表示QVariant对象的值无效。可能是由于未正确初始化或设置对象的属性导致的。请确保在使用QVariant对象之前正确初始化和设置其值。

2. CoCreateInstance failure (没有注册类):这表示无法创建指定类的实例。可能是由于未正确注册类或缺少相关的组件导致的。请确保所需的类已正确注册,并且系统中已安装了相关的组件。

3. QAxBase::setControl: requested control AcroPDF.PDF could not be instantiated:这表示无法实例化请求的控件。可能是由于控件未正确安装或未正确注册导致的。请确保所需的控件已正确安装,并且系统中已注册该控件。

4. QAxBase::dynamicCallHelper: Object is not initialized, or initialization failed:这表示对象未初始化或初始化失败。可能是由于对象的初始化过程中出现了错误或问题导致的。请确保在使用对象之前正确初始化对象,并检查初始化过程中是否有任何错误。

要解决这些问题,您可以尝试以下步骤:

1. 确保所需的控件已正确安装并注册。如果您使用的是Adobe Acrobat Reader控件来显示PDF文件,请确保已正确安装Adobe Acrobat Reader,并且系统中已注册该控件。

2. 检查代码中是否正确设置了控件的属性和参数。请确保在使用QAxWidget对象之前正确设置其属性和参数,以确保正确的初始化和实例化。

3. 确保您的应用程序具有足够的权限来访问所需的控件和组件。请检查您的应用程序的权限设置,并确保它具有访问所需控件和组件的权限

8 其它文章

QT TextEdit控件_双子座断点的博客-CSDN博客_qt textedit

QT QComboBox使用详解_双子座断点的博客-CSDN博客

QT QtableView操作详解_双子座断点的博客-CSDN博客_qtableview增删改查

Qt QStandardItemModel(1.超级详细用法)_双子座断点的博客-CSDN博客_qstandardmodel

Qt QStandardItemModel(2.超级详细函数)_双子座断点的博客-CSDN博客_qstandarditemmodel点击事件

QT QRadioButton使用详解_双子座断点的博客-CSDN博客_qt radiobutton

QT QLineEdit使用详解_双子座断点的博客-CSDN博客_qt qlineedit

Qt QMessageBox使用详解_双子座断点的博客-CSDN博客_qt message

QChart折线图、饼状图、条形图、曲线图_双子座断点的博客-CSDN博客_qchart样式

QChart属性详解_双子座断点的博客-CSDN博客_setanimationoptions

QCharts QValueAxis使用_双子座断点的博客-CSDN博客_qvalueaxis

Qt 5 等待提示框(开源 动态图)_双子座断点的博客-CSDN博客_qt 等待对话框

QtDataVisualization 数据3D可视化_双子座断点的博客-CSDN博客_qtdatavisualizatio

QT QSpinBox 整数计数器控件 使用详解_双子座断点的博客-CSDN博客
QT QDoubleSpinBox 浮点计数器控件(使用详解)_双子座断点的博客-CSDN博客_qdoublespinbox信号槽
QT QSlider、QHorizontalSlider、QVerticalSlider 控件 使用详解_双子座断点的博客-CSDN博客_qslider设置步长

QT QTabWidget 控件 使用详解_双子座断点的博客-CSDN博客

QT QCalendarWidget控件 使用详解_双子座断点的博客-CSDN博客

QT QStackedWidget 控件 使用详解_双子座断点的博客-CSDN博客

QT QVBoxLayout 垂直布局控件_双子座断点的博客-CSDN博客

QT QHBoxLayout 水平布局控件_双子座断点的博客-CSDN博客
QT QGridLayout网格布局控件_双子座断点的博客-CSDN博客

QT QVerticalSpacer 弹簧控件_双子座断点的博客-CSDN博客
QT QHorizontalSpacer弹簧控件_双子座断点的博客-CSDN博客
QT QLine 使用详解_双子座断点的博客-CSDN博客
QT QFontComboBox 使用详解_双子座断点的博客-CSDN博客

QT QScrollArea控件 使用详解_双子座断点的博客-CSDN博客

QT QToolBox控件使用详解_双子座断点的博客-CSDN博客

QT QFrame控件使用详解_双子座断点的博客-CSDN博客
QT QMdiArea控件 使用详解_双子座断点的博客-CSDN博客

09-14 09:15