本文详细的介绍了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控件 使用详解目录
1 新建界面
2 使用示例
3 显示网页
4 显示pdf
5 显示Off
6 源文件
7 详细说明
8 其它文章
1 新建界面
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 详细说明
因为博主没有安装组件所以会失败,暂时没有涉及到这个的业务工作所以没有深入展开研究下去,把实现代码贴出来供参考
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博客