Detailed explanation of the use of QT QAxWidget control

        This article introduces in detail the various operations of the QAxWidget control, such as: creating a new interface , usage examples , displaying web pages , displaying pdf , displaying Off , and source filesDetailed descriptionOther articles and other operations.

        ActiveX control is a reusable binary component used to provide specific functions and services on the Windows operating system. The following are examples of some common ActiveX controls: 1. Internet Explorer Web Browser Control: Used to embed and display a web browser in an application. 2. Microsoft Office components (such as Word, Excel, PowerPoint): used to embed and operate Office documents in applications. 3. Windows Media Player Control: Used to embed and play audio and video files in applications. 4. Adobe Flash Player Control: Used to embed and play Flash animations and videos in applications. 5. Crystal Reports Viewer Control: used to display and print Crystal Reports reports in applications 6. Windows Common Controls (such as TreeView, ListView, ProgressBar): used to create common user interface controls in applications. 7. Microsoft DataGrid Control: used to display and edit data tables in the application. 8. Microsoft Windows Image Acquisition Control: used to acquire and process images in applications. 9. Microsoft Windows Media Encoder Control: For audio and video encoding in applications.

        There are currently thirty-eight articles in this series of comprehensive and detailed explanations of QT. This series of articles describes the basic operation and use of QT controls in more detail. Thank you for your attention, likes, and collections.

 This article is original by the author. Please attach the source of the article and the link to this article when reprinting.

QT QAxWidget control usage detailed directory

1 Create a new interface

2 Usage examples

3 Display web page

4 show pdf

5 DisplayOff

6 source files

7 Detailed description

8 other articles


1 Create a new interface

2 Usage examples

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

3 Display web page

    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 show 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 DisplayOff

//    // 创建一个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 source files

#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 Detailed description

    Because the blogger did not install the component, it failed. There is no business work involved in this yet, so I did not conduct in-depth research and posted the implementation code for reference.

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 other articles

QT TextEdit control_Gemini Breakpoint's Blog-CSDN Blog_qt textedit

Detailed explanation of the use of QT QComboBox_Gemini Breakpoint's Blog-CSDN Blog

Detailed explanation of QT QtableView operation_Gemini Breakpoint's Blog-CSDN Blog_qtableview addition, deletion, modification and query

Qt QStandardItemModel (1. Super detailed usage)_Gemini Breakpoint's Blog-CSDN Blog_qstandardmodel

Qt QStandardItemModel (2. Super detailed function)_Gemini Breakpoint's Blog-CSDN Blog_qstandarditemmodel click event

Detailed explanation of the use of QT QRadioButton_Gemini Breakpoint's Blog-CSDN Blog_qt radiobutton

Detailed explanation of the use of QT QLineEdit_Gemini Breakpoint's Blog-CSDN Blog_qt qlineedit

Detailed explanation of the use of Qt QMessageBox_Gemini Breakpoint's Blog-CSDN Blog_qt message

QChart line chart, pie chart, bar chart, curve chart_Gemini Breakpoint's Blog-CSDN Blog_qchart Style

Detailed explanation of QChart attributes_Gemini Breakpoint's Blog-CSDN Blog_setanimationoptions

QCharts QValueAxis use_Gemini Breakpoint's Blog-CSDN Blog_qvalueaxis

Qt 5 Waiting Prompt Box (Open Source Dynamic Graphic)_Gemini Breakpoint's Blog-CSDN Blog_qt Waiting Dialog Box

QtDataVisualization Data 3D Visualization_Gemini Breakpoint's Blog-CSDN Blog_qtdatavisualizatio

QT QSpinBox Integer Counter Control Detailed Explanation_Gemini Breakpoint's Blog-CSDN Blog
QT QDoubleSpinBox Floating Point Counter Control (Usage Detailed)_Gemini Breakpoint's Blog-CSDN Blog_qdoublespinbox Signal Slot
QT QSlider, QHorizontalSlider, QVerticalSlider Control Detailed Explanation_Gemini Breakpoint blog-CSDN blog_qslider setting step size

Detailed explanation of the use of QT QTabWidget control_Gemini Breakpoint's Blog-CSDN Blog

Detailed explanation of the use of QT QCalendarWidget control_Gemini Breakpoint's Blog-CSDN Blog

Detailed explanation of the use of QT QStackedWidget control_Gemini Breakpoint's Blog-CSDN Blog

QT QVBoxLayout vertical layout control_Gemini Breakpoint's Blog-CSDN Blog

QT QHBoxLayout horizontal layout control_Gemini breakpoint's blog-CSDN blogQT
QGridLayout grid layout control_Gemini breakpoint's blog-CSDN blog

QT QVerticalSpacer Spring Control_Gemini Breakpoint's Blog-CSDN Blog
QT QHorizontalSpacer Spring Control_Gemini Breakpoint's Blog-CSDN Blog
QT QLine Detailed Usage_Gemini Breakpoint's Blog-CSDN Blog
QT QFontComboBox Detailed Usage_Gemini Breakpoint's Blog- CSDN blog

Detailed explanation of the use of QT QScrollArea control_Gemini Breakpoint's Blog-CSDN Blog

Detailed explanation of the use of QT QToolBox control_Gemini Breakpoint's Blog-CSDN Blog

Detailed explanation of the use of QT QFrame control_Gemini Breakpoint's blog-CSDN blog
Detailed explanation of the use of QT QMdiArea control_Gemini breakpoint's blog-CSDN blog

Guess you like

Origin blog.csdn.net/qq_37529913/article/details/132819695