QuickTips | C++/Qt | Solução para error: invalid use of incomplete type 'struct Ui::MyForm'

Pode parecer uma dica noob ou até mesmo para os experts algo irrelevante, mas para pessoas que estão começando serve de grande ajuda.

Hoje estava programando em C++ com Qt utilizando QtCreator aqueles que conhecem a ferramenta já devem ter modelado suas telas desktop com QtDesigner que por sinal é uma excelente ferramenta.

Sendo assim após modelar uma simples user interface e criar o arquivo form_1.ui o mesmo rodou perfeitamente. Mas resolvi reutilizar o form_1.ui retirando alguns campos criados. Então fiz um copy e paste em um novo arquivo chamado form_2.ui, neste momento começaram os meus problemas, toda vez que tentava compilar surgia o erro abaixo:

.projectform_2.cpp:6:5 error: invalid use of incomplete type ‘struct Ui::FormDois’
.projectform_2.h:7:11: error: forward declaration of ‘struct Ui::FormDois’

Mas o estranho é que no meu código estava tudo normal com o namespace Ui inserido no form_2.h:

namespace Ui {

class VendorForm;
}

Onde está o erro?

Ao abrir o arquivo form_2.ui  (  aquele que fiz copy e paste -_-)  descobri que o campo widget  estava utilizando o nome da classe e do widget do form_1.ui, imediatamente fiz a correção e funcionou perfeitamente. =)

*O arquivo com extensão *.ui é um formato xml utilizado  para armazenar toda a configuração de interface com o usuário contendo as definições do Qt widgets. Detalhes por favor acesse: [1]  e [2] 

Erro no arquivo form_2.ui:

<?xml version="1.0" encoding="UTF-8"?>

<ui version="4.0">
<class>OneForm</class>
<widget name="OneForm">

Correção no arquivo form_2.ui:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>TwoForm</class>
 <widget name="TwoForm">

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s