2012-02-26 29 views
6

La parte del diseñador qt del creador qt tiene muchos widgets integrados. Pero digamos que quiero agregar widgets personalizados creados en el mismo proyecto qt al archivo ui de la ventana. Al tomar estas medidas:Agregar widgets construidos por el usuario a un archivo ui en qt creator

  1. crear una nueva aplicación Qt GUI con una ventana principal, que llamaremos la ventana A.
  2. Añadir un nuevo widget para el proyecto, el widget sólo utiliza componentes de interfaz de usuario estándar, digamos botones. Llamaremos a este widget B.
  3. Añadir una instancia de widget de B a A. ventana

Ahora, yo sé una manera de hacerlo, y eso es:

  1. En la ventana A , añadir un widget en blanco (o contenedor del widget, desde la sección de contenedores de la lista de posibles widgets. llamaremos a este widget C.
  2. promoverlo (widget de C) a widget B.

Sin embargo, el problema con esto es que el diseñador de Qt Creator lo trata como un QWidget genérico. Y como tal, no puede hacer cosas como agregarlo a un divisor o conectar señales/ranuras que sean específicas del widget.

¿Hay alguna otra forma de agregar el widget B a la ventana A en el archivo ui usando qt creator? Gracias.

+2

Puede crear un widget personalizado para el diseñador: http://developer.qt.nokia.com/doc/qt-4.8/designer-creating-custom-widgets.html – Lol4t0

+0

Hmm ... parece que si sigo este procedimiento , cualquiera que quiera editar este proyecto debería instalar el plugin por separado, ¿sí? Preferiría tenerlo donde el proyecto se pueda abrir sin instalar un plugin, si eso es posible. –

+0

@LeifAndersen Esto no requeriría el complemento para abrir el proyecto, solo para ver e interactuar con el nuevo widget. Dependiendo de su proyecto y equipo, un repositorio central para complementos podría ser una posibilidad; es lo que hace nuestra compañía Sin embargo, no conozco otra opción además de estas. –

Respuesta

1

No estoy seguro de que entiendas bien tu pregunta para poder hacer la pregunta incorrecta. ¿Estás seguro de que tu widget "B" es una subclase de QDesignerCustomWidgetInterface? Esto debería exponer todo lo que tu widget/complemento ofrece ...

Última nota: un amigo mío intentó agregar un widget personalizado como tú. Y al final del procedimiento descrito que Lol4t0 le dijo, encontró que debe compilar el complemento con el mismo compilador con el cual se compiló qtcreator/designer. Esto sucede porque, como sabemos, C++ no mantiene la compatibilidad ABI (en lugar de, por ejemplo, el lenguaje C) cosas como: el manejo de nombres puede cambiar de compilador a compilador, cómo pueden cargarse los datos en los registros ... y así sucesivamente. Mi amigo intentó compilar el plugin con mingw, pero descubrió que qtcreator se compiló con el compilador de Visual Studio. Por lo tanto, si desea implementar su complemento en Windows o compila su complemento con Visual Studio, o tiene que compilar qtcreator/designer desde cero.