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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ActiveX отлавливание событий ?  (Прочитано 4917 раз)
Денис
Гость
« : Октябрь 07, 2014, 12:39 »

Порылся по столь обильной ветке, но так и не понял как к QAxObject подтянуть какие-то события, класс не содержит никаких сигнальных функций или статусных методов, я так понял необходимо подключать эти события из вне ?

Пример стандартный:
Код:
    QAxObject *mExcel = new QAxObject( "Excel.Application",this);  //Это мы получаем указатель на Excel
    QAxObject *workbooks = mExcel->querySubObject( "Workbooks" ); //это на книги
    QAxObject *workbook = workbooks->querySubObject( "Open(const QString&)", "C:\\Qt\\hello5.xlsx" ); //это на директорию,откуда грузить книгу
    QAxObject *mSheets = workbook->querySubObject( "Sheets" ); //это на листы(снизу вкладки)
    QAxObject *StatSheet = mSheets->querySubObject( "Item(QVariant&)", QVariant("Main") ); //Это мы указываем,какой лист выбрать. У меня он называется topic

    QAxObject *rangec = StatSheet->querySubObject( "Cells(const QVariant&,const QVariant&)",QVariant(1),QVariant(1)); //получаем указатель на ячейку,откуда будем копировать.
    QAxObject *rangep = StatSheet->querySubObject( "Cells(const QVariant&,const QVariant&)",QVariant(2),QVariant(3)); // получаем указатель на ячейку,куда будем копировать.
    rangec->dynamicCall("Copy()"); //осуществляем запрос на копирование.
    rangep->dynamicCall("Select()"); ///выбираем ячейку,в которую будем вставлять данные
    StatSheet->dynamicCall("Paste()");  ///вставляем.

    delete StatSheet;
    delete mSheets;
    workbook->dynamicCall("Save()");
    connect(workbook,SIGNAL());
    workbook->dynamicCall("Close()");
    delete workbook;
    delete workbooks;
    mExcel->dynamicCall("Quit()");
    delete mExcel;

Но как увидеть что при открытии идет событие файл можн открыть только для чтения и остальные которые отображаются в GUI ?
Записан
Johnik
Крякер
****
Online Online

Сообщений: 339


Просмотр профиля
« Ответ #1 : Октябрь 07, 2014, 13:07 »

С событиями COM и Qt не всё так просто.

Если совсем по простому. Есть несколько типов событий в COM:
1. Более новый механизм (в классах унаследованных от IDispath). Из этих классов Qt подтягивает события и отображает на сигналы.
2. Старый механизм (в классах унаследованных от IUnknown). Тут придется ручками.

В обоих случаях есть нюансы.
Записан
Денис
Гость
« Ответ #2 : Октябрь 07, 2014, 15:23 »

А где конкретно можно почитать про это, про данное наследование и методы привязки ?
Записан
Johnik
Крякер
****
Online Online

Сообщений: 339


Просмотр профиля
« Ответ #3 : Октябрь 07, 2014, 19:51 »

Для начала: Дейл Роджерсон | Основы COM, потом по крохам в разных местах...

Вот тут я разбирался...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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