juj*_*lbe 3 qt multithreading activex
我正在尝试处理Excel工作表以使用Qt(4.6.3)对其中的数据进行一些处理.我试过QAxWidget excel("Excel.Application")用这里使用的.
我首先尝试在一个简单的方法中使用它,一切正常但GUI冻结了一段时间,所以我尝试在不同的方式实现它QThread.
正如一些人所说,不允许QWidget在主线程之外的其他线程中使用继承的类.我也尝试过这种方式,但无论如何都有运行时错误.
这是我的代码片段:
void MainDialog::extractData()
{
QAxWidget excel("Excel.Application");
excel.setProperty("Visible", false);
QAxObject * workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Open (const QString&)", ui->lineEditAdress->text());
QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);
// ... some work here...
workbook->dynamicCall("Close (Boolean)", false);
excel.dynamicCall("Quit (void)");
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?有没有更好的方法来完成工作?比ActiveX更好的想法?
谢谢.
编辑:
正如Raiv所说,我换成QAxWidget了QAxObject
只需调用线程的run():
// ...
CoInitialize(0);
QAxObject excel("Excel.Application");
// ...
Run Code Online (Sandbox Code Playgroud)
它工作正常.
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |