Russian Qt Forum
Май 04, 2024, 02:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: unsupported type - Office::MsoTriState  (Прочитано 3856 раз)
Pointer
Гость
« : Март 04, 2012, 21:42 »

Здравствуйте! Стоит задача вытащить текст из презентации PowerPoint. Делаю так:
Код:
    mPowerPoint = new QAxObject("PowerPoint.Application", this);
    QString path("Hello.ppt");
    QAxObject *presentations = mPowerPoint->querySubObject("Presentations");
    QAxObject *presentation = presentations->querySubObject("Open(const QString&)", path);
    QAxObject *slides = presentation->querySubObject("Slides" );

    int iColPages = slides->property("Count").toInt();  //кол-во слайдов

    //перебираем слайды
    for (int iPage = 1; iPage <= iColPages; iPage++) {
        QAxObject *slide = slides->querySubObject("Item(const QVariant&)", QVariant(iPage) );
        QAxObject *shapes = slide->querySubObject("Shapes");

        int iColItems = shapes->property("Count").toInt();  //кол-во элементов (вместе с заголовком)

        //перебираем элементы на слайде
        for (int iItem = 1; iItem < iColItems; iItem++ ) {
            //берем элемент
            QAxObject *item = shapes->querySubObject("Item(const QVariant&)", QVariant(iItem));
           
            //проверяем тип элемента
            if ([color=red][b]item->property("HasTextFrame").toBool()[/b][/color]) {
                //вытаскиваем текст из элементов
                QAxObject *textFrame = item->querySubObject("TextFrame");
                QAxObject *textRange = textFrame->querySubObject("TextRange");
                QString val = textRange->property("Text").toString();
            }

        }
    }

Программа запускается, но условие не работает так как нужно. Поле HasTextFrame имеет тип Office::MsoTriState и QT Creator пишет в консоли:
Цитировать
QMetaProperty::read: Unable to handle unregistered datatype 'Office::MsoTriState' for property 'QAxObject::HasTextFrame'

В сгенерированной справке по объекту Shape написанно:
Цитировать
Office::MsoTriState HasTextFrame

This property is of an unsupported type.

Как подружить QT c Office::MsoTriState?

Извините, если вопрос глупый, на QT раньше ничего не писал и с Activex не работал. Также буду рад замечаниям по остальному коду. Может, есть более правильные способы?
« Последнее редактирование: Март 04, 2012, 21:47 от Pointer » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 20.