ein-/ausblendene Toolbar

Alles rund um die Programmierung mit Qt
Antworten
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

ein-/ausblendene Toolbar

Beitrag von Esleborn »

hi,
ich wollte wissen, ob es in Qt eine Möglichkeit gibt um Toolbars zu basteln, die automatisch ein- und ausgeblendet werden.

Chris
Glaube an eine Lösung, nur dann kannst du auch eine finden.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Wenn du drüber bist erscheint Sie, wenn du mit der Maus weggehst, verschwindet Sie?

Solch einen Ansatz benötige ich auch, allerdings für Widgets allgemein, es sollte nicht auf QToolBar begrenzt sein. Vielleicht könnten wir hier gemeinsam eine Lösung erarbeiten.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

wouold be nice

wie wär es wenn wir eine Klasse schreiben, welche ein beliebiges QWidget "verwaltet". In der folgenden Form:

Code: Alles auswählen

class C_PopingWidget : public Q_Object
{
public:
           C_PopiongWidget  ( QWidget *fp_widget );

protected slot:
   void    PopIn            ( );
   void    PopOut           ( );

   void    MakeOneStepIn    ( );
   void    MakeOneStepOut   ( );

private:
   QTimer  *mp_timer;
   QWidget *mp_widget;
   quint32 m_shown;
   bool    m_popIn;
};

# define INTERVAL  50
# define INTERVALS 50

C_PopiongWidget::C_PopiongWidget ( QWidget *fp_widget ) : mp_widget ( fp_widget ), m_shown ( 0 ), mp_timer ( new QTimer ( this ) ), m_popIn ( false )
{
   mp_timer->setInterval ( INTERVAL );
   mp_timer->setSingleShot ( false );
   mp_timer->start ( );
}

void C_PopiongWidget::PopIn ( )
{
   if ( m_shown < INTERVALS && !m_popIn )
   {
      disconnect ( mp_timer, SIGNAL ( timeout ( ) ), this, NULL );
      connect ( mp_timer, SIGNAL ( timeout ( ) ), this, SLOT ( MakeOneStepIn ( ) ) );
      mp_timer->start ( );
      m_popIn = true;
   }
}

void C_PopiongWidget::PopOut ( )
{
   if ( m_shown > 0 && m_popIn )
   {
      disconnect ( mp_timer, SIGNAL ( timeout ( ) ), this, NULL );
      connect ( mp_timer, SIGNAL ( timeout ( ) ), this, SLOT ( MakeOneStepOut ( ) ) );
      mp_timer->start ( );
      m_popIn = false;
   }
}

void C_PopiongWidget::MakeOneStepIn ( )
{
// Hier muss man dafür sorgen, dass 1/INTERVALS der Größe mehr eingeblendet wird
}

void C_PopiongWidget::MakeOneStepOut ( )
{
// Hier muss man dafür sorgen, dass 1/INTERVALS der Größe weniger eingeblendet wird
}
geht das wohl so in der Art?
und dann muss man nur noch dafür sorgen, dass mouseover event die Popin und mouseleaveevent die popout aufruft... oder?

Elgrimm Esleborn
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Antworten