2011-11-28 48 views
6

Estoy usando Visual Studio 2010, Qt add-in, etc. todo bien, luego creo un nuevo proyecto usando el complemento Qt ... al hacer doble clic en el archivo * .ui (la forma real) en VS abre Qtdesigner, luego puse algunos controles, pero eso no cambia mi código en absoluto:/usando Qt designer en visual studio?

El formulario Qt está cambiado, contiene esos controles, pero los archivos fuente son los mismos que antes incluso después de construir mi proyecto.

Me está faltando algo? Creo que Qtdesinger debería poner un código para los objetos que creé usando Qtdesigner.

cos sin eso debemos escribir todo el código como si no hubiera Qtdesigner así que Qtdesinger es useles en Visual Studio, lo mismo que podríamos hacer manualmente codificando una interfaz de formulario. muchas gracias.

EDIT:

OK He copiado esto desde Qt sitio:

Está haciendo referencia a los objetos de un archivo .ui ... solamente

El Visual Studio modelo de código analizador analiza fuentes C++, es decir, , que los widgets u objetos definidos en archivos .ui no serán accesibles. Para solucionar el problema, el complemento Qt Visual Studio automáticamente genera código C++ del archivo .ui guardando el archivo y ejecutando uic en él. Este paso se realiza cada vez que se construye el proyecto. Si la finalización del código no funciona, intente reconstruir el proyecto. Es posible que tenga que esperar un tiempo, antes de completar el código completamente funciona después de actualizar un archivo .ui. Para obtener más información, puede consultar en la sección Modificar propiedades del proyecto. Todavía no funciona ...

Debe actualizar el modelo de código, Intellisense. Esto se hace por abriendo el explorador de soluciones, invocando el menú contextual del proyecto y activando el elemento Actualizar Intellisense.

ahora parece que estoy teniendo tales problemas, pero esto no ayuda en absoluto, actualiza la inteligencia. No puedo ver esa opción en Visual Studio, , parece que mi complemento de Visual Studio no funciona.

dice "Deberías actualizar el modelo de código" Woot? ¿alguien me puede explicar cómo hacerlo por favor?

aquí hay algunas advertencias de salida en la construcción de mi proyecto:

Advertencia 1 aviso: no hay recursos en 'C: \ Users \ Admin \ documentos \ Visual estudio 2010 Proyectos \ VisualStudio \ test \ test \ .qrc '. C: \ Users \ Admin \ documents \ visual studio 2010 \ Projects \ VisualStudio \ test \ RCC Advertencia 2 advertencia LNK4099: PDB 'vc100.pdb' no se encontró con 'qtmaind.lib (qtmain_win.obj)' o en 'C: \ Users \ Admin \ documents \ visual studio 2010 \ Projects \ VisualStudio \ vc100.pdb'; vincular el objeto como si no hubiera depuración info C: \ Users \ Admin \ documents \ visual studio 2010 \ Projects \ VisualStudio \ test \ qtmaind.lib (qtmain_win.obj)

Respuesta

6

Voy a explicarles un poco cómo funcionan las cosas y las relaciones entre los archivos, y espero que esto resuelva su problema.

Al editar el archivo ui utilizando el diseñador, todos los cambios se realizan en el archivo ui. Entonces cuando construyas un par de cosas sucederá.

Primero ... se ejecutará un paso de compilación personalizado en el archivo ui. Este paso de compilación ejecuta "uic" como dijo Macke, y generará un archivo llamado "ui_thenameofyouruifile.h". La ubicación de este archivo depende de la configuración de su proyecto, pero si observa su proyecto, debería ver una carpeta llamada Archivos Generados en su proyecto.

enter image description here

Si nos fijamos en allí debería ver el archivo recién generado. Este es el código que se "modifica" cuando realiza cambios en su formulario. Ahora bien, si este archivo no se actualiza o no existe, entonces de alguna manera la configuración de su proyecto se dañó. En este caso, eliminaría tu archivo .ui del proyecto y lo volvería a agregar. El complemento debería hacer magia y agregar todo lo que necesitas. Compila de nuevo y debería funcionar. (Supongo que es probable que sea su problema)

Lo segundo que debe suceder cuando compila, es que la clase que usa su archivo ui debe recompilar. En general, cuando crea un archivo ui, también crea un archivo .h y .cpp adjunto. Aquí es donde hacemos cualquier lógica divertida que podamos necesitar en nuestra ventana. El diseñador de Qt nunca cambiará esta clase.

En el archivo de cabecera nos referimos al archivo de interfaz de usuario al hacer esto:

namespace Ui { 
     class thenameofyouruifile; 
    } 

    #include "ui_thenameofyouruifile.h" 

y luego añadimos una variable miembro

Ui :: UI thenameofyouruifile;

Hay un par de formas de hacerlo, pero básicamente esa es la idea. Se supone que el complemento configura su proyecto para que el directorio donde se generan los archivos se incluya en los "directorios de inclusión adicionales" en la configuración de su proyecto, pero ese es otro lugar para verificar que su código realmente esté enlazando con el archivo correcto generado.

+0

hola, dijiste "El diseñador de Qt nunca cambiará esta clase". para ser honesto, ese fue mi desajuste. Temo muy estúpido ahora, jajaja, los archivos generados están bien, pero pensé que Qtdesigner pondría algún código esqueleto en mi fuente de clase para poder seguir insertando mi código. al menos ese es el caso cuando se usan formularios CLR ... VS pondrá esos códigos de esqueleto para que usted pueda seguir poniendo los suyos, lamentablemente ese no es el caso con Qt-addin. ¡Eso es mucho para ti y para los demás! – codekiddy

0

Si ha creado un widget Qt utilizando el nuevo asistente de clase, las cosas deberían funcionar como se esperaba.

I.e. sus archivos .ui son compilados por Qt's uic a archivos .cpp, es decir, necesita construir su proyecto para obtener estos cambios en la clase ui.

Por lo tanto, los archivos .ui se deben agregar al proyecto y tienen algunas reglas de compilación especiales que invocan 'uic' en ellos. Si ese no es el caso, intente volver a agregarlos a su proyecto (de ese modo, el complemento Qt debe configurar las reglas de compilación)

Normalmente, tiene una clase que hereda QWidget que luego incluye el compilado cpp- clase, de una manera u otra, por lo general como una variable miembro (pero la herencia también es una opción).

Agregar un .ui-file directamente también debería funcionar (si estás en un proyecto de Qt, que eres ...), pero obviamente algo está mal.

¿Los proyectos de ejemplo funcionan como se esperaba?

+0

¿Qué quieres decir con "necesitas construir tu proyecto"? , Lo he creado y no se han realizado cambios en los archivos fuente. puede ser más detallado sobre la construcción. – codekiddy

+0

¿Creas widgets Qt usando el asistente de "nueva clase"? Si es así, los archivos .ui deberían compilar automáticamente en archivos C++, y debería tener archivos .h/.cpp (para el widget Qt) que importan el resultado del paso de compilación de ui ... respuesta actualizada para incluir información relevante .. – Macke

+0

proyectos de ejemplo no funcionan, al abrir la solución dice que uno o más proyectos no se agregan ... todos los proyectos están descargados y no se pueden volver a cargar. Entiendo lo que está pasando pero no tengo suerte, reconstruyo, leo archivos, etc ... las fuentes siguen siendo las mismas. – codekiddy

2

Si Qt Add-In se instaló correctamente, debe generar el paso de compilación personalizado para los archivos relacionados con Qt (archivo .ui o moc). No he probado Qt Add-in con VS 2010, pero con VS 2008 está bien.

El trabajo en torno para su problema, es necesario añadir manualmente el paso de generación personalizada para cada archivo de interfaz de usuario que tiene en el proyecto. Para ello, el paso es:

  1. hace clic derecho en el archivo de interfaz de usuario, y haga clic en las propiedades (estoy usando VS-2008 para hacer este paso, y esperar que esto no puede ser muy diferente en VS 2010) .

  2. En el paso de compilación personalizada, agregue esto en la línea de comando: "$ (QTDIR) \ bin \ uic.exe" -o ". \ GeneratedFiles \ ui _ $ (InputName) .h" "$ (InputPath)"

  3. y añadir a bajo de salida: "\ GeneratedFiles \ ui _ $ (InputName) .h"

  4. Y esto en dependencias adicionales: $ (QTDIR) \ bin \ uic.exe. Luego haz clic en aplicar/ok.

Si se hace esto, el archivo es ui compilables, (al hacer clic en él, se puede compilar), por lo que cuando el cambio de contenido de archivos de interfaz de usuario, el nuevo código de la interfaz de usuario de archivos (.h) se regenera.

Como alternativa, para restablecer el archivo de proyecto VS (vcprojx) puede crear el proyecto Qt en el creador Qt (o si ya tiene uno) y luego convertir el proyecto creador Qt (.pro) en vcproj usando esta línea de comando :

qmake -spec win32-msvc2010 -tp vc 

Esto creará el vcproj con el paso de generación adecuado para usted (en caso de tener tantos archivos de interfaz de usuario, entonces no tiene que hacer el primer acercamiento).

+0

muchas gracias por esta información, copiaré su publicación y la usaré para referencia futura para compilaciones personalizadas. – codekiddy

Cuestiones relacionadas