2011-02-05 38 views
10

El creador de Qt tiene la opción de promocionar un widget a la clase creada a medida que se deriva del widget base. Quiero usar eso para promocionar el widget a la clase en el proyecto actual. El creador de Qt me pregunta sobre el nombre de clase y el nombre de archivo del encabezado, y esos valores van directamente al archivo * .ui, y luego a ui_myform.h - el problema es que este archivo puede ser (y normalmente lo es) generado fuera del árbol fuente (en el árbol de compilación) que puede estar en una ubicación arbitraria, por lo que la especificación directa de la ruta en la ventana de promoción no ayudará. ¿Cómo se informa a QtCreator/uic dónde buscar el encabezado correcto? ¿Es posible?Promoción de widgets en Qt Creator

Tal vez haya alguna ubicación de especificación Qt del árbol fuente, que podría insertar en el campo del nombre de archivo del encabezado?

Estoy utilizando QtCreator 2.0.1 autocompilado Qt 4.7.1 autocompilado.

EDIT:

Por qué no puedes simplemente escribir el nombre de la ruta completa del archivo de cabecera?

¿Qué pasa si voy a mover árbol de fuentes, o incluso compartirlo en la web - entonces todo el mundo que quiera compilar mi proyecto tendría que editar este camino, ya sea en Qt Creator o en los archivos de origen - ambos son inaceptables.

+0

¿Por qué no puede escribir la ruta completa del archivo de encabezado? – TonyK

Respuesta

18

El archivo de cabecera que el diseñador le pide en el diálogo de promoción es SU archivo de cabecera que definen el propio widget personalizado, no el generado ui _ *. H archivo.

decir que quiere promover una llanura QWidget a MyCustomWidget, ya debe tener una MyCustomWidget.h que define la clase MyCustomWidget incluidos en el archivo .pro así:

HEADERS += MyCustomWidget.h 

Y en el cuadro de diálogo de promoción del widget, simplemente escriba MyCustomWidget.h. El objetivo es que el archivo de encabezado ui generado (donde sea) pueda incluir SU definición de clase.

2

Ya me di cuenta de esto: promocionaba mi clase y daba un nombre de encabezado autocomprimido correcto.

El problema era que este (auto escrito) archivo no estaba directamente en el directorio del proyecto pero en src subdirectorio (donde todas las demás fuentes también lo son), no estoy utilizando la plantilla subdirectorios, pero la simple adición de ellos como

SOURCES += src/myWidget.cpp 

la opción de la promoción no requiere ruta completa, pero es necesario que tal como aparece en *.pro archivo - en este conmutación myWidget.h-src/myWidget.h hizo el truco caso - y funcionará si me mudo o compartirlo.

1

si la forma de widget de (.ui) y de clase archivos promovidas (.cpp, .h) están en un subdirectorio del proyecto Qt Creator y la solución de j_kubik no ayuda que muestra el error ("foo.h not found"), trate de usar sólo el nombre de archivo de cabecera para la promoción y proporcionar la ruta como INCLUDEPATH en el archivo .pro.

+0

Creo que esto funciona. Si tienes subdirectorios donde colocaste tu .ui y tus archivos .cpp/.hpp, necesitarías agregar un INCLUDEPATH para residir en el encabezado de la clase – Zardoz89