2010-07-21 23 views

Respuesta

81

A QWidget es la clase base para todas las clases dibujables en Qt. Cualquier clase basada en QWidget se puede mostrar como una ventana al mostrarla cuando no tiene un elemento primario.

A QDialog se basa en QWidget, pero está diseñado para mostrarse como una ventana. Siempre aparecerá en una ventana y tiene funciones para que funcione bien con botones comunes en los diálogos (aceptar, rechazar, etc.).

QMainWindow está diseñado según las necesidades comunes de una ventana principal. Tiene lugares predefinidos para una barra de menú, una barra de estado, una barra de herramientas y otros widgets. No tiene ningún permiso incorporado para botones como QDialog.

+0

He buscado esta pregunta, pero esa no es realmente la respuesta que estaba esperando. En QtDesigner usando QMainWindow le da una barra de menú y una barra de estado. Cuando escribe el código usted mismo y utiliza QMainWindow, no tiene estas cosas. O diciendo que puedes hacer algo como window.addToolBar ("Toolbar"); y lo colocará en un lugar predefinido sin ningún otro dolor de cabeza? –

+0

@MoraruLilian: en realidad, no uso QMainWindow, así que no sé los detalles. Como dije en mi respuesta, sé que tiene lugares para ellos, por lo que hacerlo en código podría ser tan simple como usted indique. –

+5

@Caleb_Huitt Hace lo que digo. Quería aclarar si eso es lo que intentas decir. De todos modos, recomendaría siempre usar QWidget en lugar de QMainWindow. Puede tener problemas, por ejemplo, al configurar otro Layout. Si desea establecer un nuevo diseño en QMainWindow, debería crear un QWidget y configurarlo como un widget central para QMainWin y justo en QWidget podría establecer Layout (QLayout *). Si bien puedes evitar dolores de cabeza adicionales solo con QWidget. Claro, QMainWindow ofrece una configuración sencilla de ToolBar y StatusBar, pero puede hacerlo usted mismo en QWidget ... –

Cuestiones relacionadas