Desenvolvimento de Controles ActiveX com Qt: Configuração e Primeiro Exemplo

Quando o desempenho de renderização de animações em C# se torna insuficiente, uma alternativa viável é criar controles personalizados utilizando Qt e exportá-los como componentes OCX/ActiveX para integração com aplicações C#. É importante destacar que o Qt Creator não oferece suporte nativo para projetos ActiveX, tornando necessário o uso do Visual Studio com o complemento Qt Visual Studio Tools.

Pré-requisitos do Ambiente

Para este guia, utilizaremos Qt 5.15.2 integrado ao Visual Studio 2019 com o plugin Qt VS Tools instalado. A configuração básica do ambiente de desenvolvimento não será detalhada aqui.

Criando o Primeiro Controle ActiveX em Qt

Passo 1: Criar o Projeto Qt ActiveQt Server

No Visual Studio, selecione o template de projeto "Qt ActiveQt Server" para iniciar um novo projeto voltado à geração de controles ActiveX.

Passo 2: Adicionar um QLabel com Texto de Demonstração

No designer de interface, adicione um componente QLabel à janela do controle e defina seu texto como "Hello world" para servir como elemento visual básico de teste.

Passo 3: Resolver Erro de Build "MSB3073"

Durante a primeira tentativa de compilação, pode surgir o erro MSB3073. Isso ocorre devido à necessidade de permissões eleavdas para registro de componentes no sistema. A solução é executar o Visual Studio 2019 com privilégios de administrador.

Passo 4: Compilar nas Configurações Debug e Release

Compile o projeto em ambas as configurações para garentir que as versões de depuração e produção sejam geradas corretamente.

Passo 5: Registrar o Controle ActiveX

Antes de utilizar o controle, é preciso registrá-lo no Windows. Utilize a ferramenta idc incluída na instalação do Qt:

idc -regserver activeHelloWorldDemo.dll

Passo 6: Testar o Controle em uma Página HTML

Após o registro, abra o Editor do Registro (regedit) e pesquise pelo nome do projeto para localizar o CLSID atribuído ao controle. Com o CLSID em mãos, crie um arquivo HTML de teste:


<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Teste do Controle ActiveX</title>
</head>
<body>
    <object id="qtActiveXCtrl"
            classid="CLSID:2F12BFB8-137D-4DC2-9A93-634EFE5A6DFC">
        [Objeto indisponível! Verifique se o controle foi compilado e registrado.]
    </object>
</body>
</html>

Para testar, abra o arquivo no Internet Explorer, pois ActiveX é uma tecnologia proprietária da Microsoft e não é suportada por outros navegadores.

Problemas Comuns

Problema: Falha ao Carregar o Controle na Página

Sintoma: O objeto não é exibido e aparece a mensagem de que o objeto está indisponível.

Causa: O formato do atributo classid está incorreto. O prefixo "CLSID:" é obrigatório antes do identificador.

Solução: Certifique-se de incluir o prefixo correto no atributo classid:

<object id="qtActiveXCtrl"
        classid="CLSID:2F12BFB8-137D-4DC2-9A93-634EFE5A6DFC">
</object>

Tags: Qt ActiveX OCX Visual Studio Qt ActiveQt

Publicado em 7-7 04:52