Seite 1 von 1
ein-/ausblendene Toolbar
Verfasst: 14. November 2005 21:30
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
Verfasst: 15. November 2005 09:59
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.
Verfasst: 15. November 2005 14:06
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