c++ - 如何使用 QAxObject 捕获/抛出错误

标签 c++ excel qt try-catch throw

我想使用 QAxObject 来处理 Excel 文件。
我想像下面的代码一样以某种方式实现初始化:

QAxObject* excel;//excel pointer

void initExcel(){
    try
    {
        //if there excel process already running try to use it
    }
    //catch if it's not running
    catch()
    {
        try 
        {
            excel = new QAxObject("Excel.Application");
        } 
        catch 
        {
            //meassge if excel not exist/can't start     
        }
    }
}

我如何使用 QAxObject 捕获/抛出错误?我试着用谷歌搜索它,但没有找到任何 exapmlpe

最佳答案

要知道是否加载了 ActiveX 控件,您应该使用 setControl 方法的结果。要捕获 ActiveX 控件的异常,您应该连接到异常信号。

bool controlLoaded = axWidget->setControl("Word.Document");
if (!controlLoaded)
{
    // Message about control didn't load
}
else
{
    // Control loaded OK; connecting to catch exceptions from control
    connect(
        axWidget, 
        SIGNAL(exception(int, const QString &, const QString &, const QString &)), 
        this, 
        SLOT(onAxWidgetException(int, const QString &, const QString &, const QString &)));
}

关于c++ - 如何使用 QAxObject 捕获/抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19442177/

相关文章:

c++ - Qt中的实时保存

c++ - 将 double 转换为具有超过 5 个十进制数字精度的字符串

c# - SWIG 更改 C# 特定类型字段的类型

excel - 数据研讨会导入问题

regex - 是否可以?匹配完全相同数量的左括号和右括号

c++ - 如何在 Qt 中创建类似连续子表单(小部件)的 ms-access?

c++ - 两组函数如何互斥?

c++ - 为什么不推荐使用 boost::optional::is_initialized() ?

Excel VBA - 以编程方式将代码行插入到工作表的 CodeModule 中的特定子宏

c# - Excel 互操作应用图表模板