PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit zoomen (Qwt)



SWE_laie
28-01-2005, 16:20
Hallo alle zusammen
ich habe ein problem mit dem Zoom. ich habe ein Grafikfenster zur Ausgabe von Grafen geschrieben, es werden mehrere Grafen aufgeteilt in Tabs angezeigt. Jetzt klappt das zoomen aber nur noch im ersten Tab in den anderen nicht mehr. Woran könnte das liegen?
Der Quellcode wo ich meine, dass das Problem liegt kommmt jetzt:



DiagramWidget::DiagramWidget (QWidget *p, const char *name): QMainWindow (p, name)
{
setCentralWidget (new QWidget (this, "qt_central_widget"));
tabWidget3 = new QTabWidget (centralWidget(), "tabWidget3");

//Tab Nummer 1 (Druck)
tab = new QWidget (tabWidget3, "tab");
d_plot = new Kurveplot (tab);

//Tab Nummer 2 (Fuellstand)
tab_2 = new QWidget (tabWidget3, "tab_2");
d_plot2 = new Kurveplot (tab_2);

//Tab Nummer 3 (Temperatur)
tab_3 = new QWidget (tabWidget3, "tab_3");
d_plot3 = new Kurveplot (tab_3);

//Tab Nummer 4 (Ablass)
tab_4 = new QWidget (tabWidget3, "tab_4");
d_plot4 = new Kurveplot (tab_4);

//Tab Nummer 5 (All in One)
tab_5 = new QWidget (tabWidget3, "tab_5");
d_plot5 = new Kurveplot (tab_5);
} //end of konstruktor



void DiagramWidget::plot ()
{
tabWidget3 -> setGeometry (QRect (10, 10, 500, 400));

//Tab Nummer 1 (Druck)
d_plot -> setGeometry (QRect (10, 10, 480, 350));
d_plot -> plot (1);
tabWidget3 -> insertTab (tab, QString (""));

//Tab Nummer 2 (Fuellstand)
d_plot2 -> setGeometry (QRect (10, 10, 480, 350));
d_plot2 -> plot (2);
tabWidget3 -> insertTab (tab_2, QString (""));

//Tab Nummer 3 (Temperatur)
d_plot3 -> setGeometry (QRect (10, 10, 480, 350));
d_plot3 -> plot (3);
tabWidget3 -> insertTab (tab_3, QString (""));

//Tab Nummer 4 (Ablass)
d_plot4 -> setGeometry (QRect (10, 10, 480, 350));
d_plot4 -> plot (4);
tabWidget3 -> insertTab (tab_4, QString (""));

//Tab Nummer 5 (All in One)
d_plot5 -> setGeometry (QRect (10, 10, 480, 350));
d_plot5 -> plot_all () ;
tabWidget3 -> insertTab (tab_5, QString (""));

setCaption (tr ("Diagramme"));
tabWidget3 -> changeTab (tab, tr ("Druckdiagramm"));
tabWidget3 -> changeTab (tab_2, tr ("Fuellstandsdiagramm"));
tabWidget3 -> changeTab (tab_3, tr ("Temperaturdiagramm"));
tabWidget3 -> changeTab (tab_4, tr ("Ablassdiagramm"));
tabWidget3 -> changeTab (tab_5, tr ("All in One"));
resize (QSize (500, 400).expandedTo(minimumSizeHint ()));
clearWState (WState_Polished);

d_zoomer[0] = new QwtPlotZoomer(QwtPlot::xBottom, QwtPlot::yLeft, QwtPicker::DragSelection, QwtPicker::AlwaysOff, d_plot -> canvas() );
d_zoomer[0] -> setRubberBandPen (Qt::green);

d_zoomer[1] = new QwtPlotZoomer(QwtPlot::xTop, QwtPlot::yRight, QwtPicker::DragSelection, QwtPicker::AlwaysOff, d_plot -> canvas() );
d_zoomer[1] -> setRubberBand (QwtPicker::NoRubberBand);

QToolBar *toolbar = new QToolBar (this);

QToolButton *btnzoom = new QToolButton (toolbar);
btnzoom -> setTextLabel ("Zoom");
btnzoom -> setPixmap (zoom_xpm);
btnzoom -> setToggleButton (TRUE);
btnzoom -> setUsesTextLabel (TRUE);

QToolButton *btnexit = new QToolButton (toolbar);
btnexit -> setTextLabel ("Exit");
btnexit -> setPixmap (exit_xpm);
//btnexit -> setToggleButton (TRUE);
btnexit -> setUsesTextLabel (TRUE);

toolbar -> setStretchableWidget (new QWidget (toolbar) );

zoom (FALSE); //zoom deaktivieren

connect (btnzoom, SIGNAL(toggled(bool)), SLOT(zoom(bool) ));
connect (btnexit, SIGNAL (clicked()), qApp, SLOT (quit()));
} //end of plot




void DiagramWidget::zoom (bool on)
{
d_zoomer[0] -> setEnabled (on);
d_zoomer[0] -> zoom(0);

d_zoomer[1] -> setEnabled (on);
d_zoomer[1] -> zoom(0);
} //end of zoom


ich hoffe ihr könnt mir helfen

anda_skoa
28-01-2005, 16:48
Wäre es nicht besser du fügst die Tabs schon im Konstruktor zum Tabwidget hinzu, nicht erst in plot()?
Oder wird plot() auch nur einmal aufgerufen?

Zu deinem eigentlichen Problem: soweit ich sehen kann erzeugst du nur für d_plot zwei Zoomer, vermutlich brauchst du für die anderen Plots auch welche.

Ciao,
_

SWE_laie
28-01-2005, 21:02
Gute Idee habe ich garnicht gesehen ich werde es morgen mal probieren und plot() wird nur einmal aufgerufen.