[Kde-devel-es] Canvas muy pequeño

Albert Astals Cid tsdgeos at terra.es
Sat Jan 24 21:45:23 CET 2004


El tema si te fijas es que tu MDChartView no gestiona sus hijos de ninguna 
manera, es decir, tu le estas poniendo dentro un QCanvasView, pero como el 
MDChartView no tiene ningun layout no sabe "que hacer" con el. Para corregir 
esto tienes dos opciones:
	- Ponerle a MDChartView un layout (ya sea conviertiendolo en QHBox o 
poniendole un layout)
	- Convertir MDChartView en un QCanvasView que si te das cuenta es mucho más 
logico ya que es lo que tu quieres, que tu widget "sea" el lienzo.

Yo tengo algo asi

board::board(QWidget *parent, int w, int h) : QCanvasView(parent)
{
	p_canvas = new QCanvas(w, h);
	setCanvas(p_canvas);
}

y funciona perfectamente.

Albert.

A Dimarts 20 Gener 2004 16:08, Alejandro Exojo va escriure:
> Hola.
>
> Tengo algunos problemas con un pequeño widget. Diría que tengo algún error
> de concepto, y por eso no tengo el resultado que quiero.
>
> Quiero que un widget de mi aplicación, dibuje unos pequeños gráficos, así
> que sé que he de usar QCanvas y QCanvasView para ello. No estaba seguro de
> si usar una clase que se encargara de eso, o poner ese código en la clase
> principal.
>
> Al final he optado por lo segundo, y tengo algo muy sencillo, pero que no
> funciona bien:
>
> ------------mdchartview.h----------------
> #include <qwidget.h>
>
> //Forward declarations
> class QCanvas;
> class QCanvasView;
>
> class MDChartView : public QWidget {
> 	Q_OBJECT
> public:
> 	MDChartView(QWidget *parent=0, const char *name=0);
> 	~MDChartView();
> private: // Private attributes
> 	QCanvas *m_canvas;
> 	QCanvasView *m_view;
> };
> -------------------end----------------------
>
> ------------mdchartview.cpp-----------
> #include "mdchartview.h"
>
> MDChartView::MDChartView(QWidget *parent, const char *name ) :
> QWidget(parent,name)
> {
> 	m_canvas = new QCanvas(0, "char canvas obj");
> 	m_canvas->resize(400, 400);
> 	QCanvasText test("Current dFSM chart", m_canvas); // just for "debbuging"
> 	m_view = new QCanvasView(m_canvas, this, "chart canvas view"); // canvas,
> parent, name
> 	//m_view->resizeContents(200,200);
> 	m_view->show();
> }
>
> MDChartView::~MDChartView()
> {}
> ------------------end------------------
>
> Sin embargo, cuando uso esa clase desde el que ha de ser su widget padre,
> así:
>
> chartview = new MDChartView(this);
>
> Me aparece el lienzo (canvas) en una esquina y muy pequeño, pero desplaza
> al widget que tiene al lado (estoy usando un QHBoxLayout) como si fuera más
> grande.
>
> No se me ocurre que pueda estar mal :-(. Siendo el QCanvasView es el único
> hijo de la clase, ¿no debería ocupar todo su tamaño?
>
> ¿Alguna idea?
>
> Muchas gracias. Un saludo.



More information about the Kde-devel-es mailing list