[gelöst] QAbstractSlider ohne Prozentanzeige
[gelöst] QAbstractSlider ohne Prozentanzeige
Hallo,
ich habe einen VideoController für libvlc mit Qt gebaut. Es funktioniert alles soweit wunderbar.
Die Volumeneinstellung wird mittels eines Sliders (QAbstractSlider) gesteuert. Als Grundlage dienten die QT4-Klassen des original VLC-MediaPlayers.
Ich möchte jetzt den Slider aber ohne die Prozentanzeige haben, resp. diese mit weißem Text, statt dem grauen wenn man die Anzeige nicht ausblenden kann.
Leider habe ich zum ausblenden nach langer Suche nichts gefunden. Den Text habe ich versucht mit CSS zu formatieren, was mit aber nicht gelungen ist wie zB. bei Labels. Da bekomme ich es hin.
Danke für einen Tipp.
CG
ich habe einen VideoController für libvlc mit Qt gebaut. Es funktioniert alles soweit wunderbar.
Die Volumeneinstellung wird mittels eines Sliders (QAbstractSlider) gesteuert. Als Grundlage dienten die QT4-Klassen des original VLC-MediaPlayers.
Ich möchte jetzt den Slider aber ohne die Prozentanzeige haben, resp. diese mit weißem Text, statt dem grauen wenn man die Anzeige nicht ausblenden kann.
Leider habe ich zum ausblenden nach langer Suche nichts gefunden. Den Text habe ich versucht mit CSS zu formatieren, was mit aber nicht gelungen ist wie zB. bei Labels. Da bekomme ich es hin.
Danke für einen Tipp.
CG
Zuletzt geändert von chris_g am 27. November 2009 10:07, insgesamt 1-mal geändert.
QSlider hat natürlich keine Protentanzeige, aber QAbstractSlider anscheinend schon. Ich setzte da nämlich gar nichts und will das ja weg haben.
Sourcecode s.u.:
SoundWidget wird auf dem Controller platziert da ich mit QFrame ein Hintergrundbild lade.
Hier der SoundSlider abgeleitet von QAbstractSlider und mehr oder weniger vom VLC-Source übernommen:
Hier ein Screenshot (Attachement). Die Prozentanzeige ist nicht von mir sondern erscheint wie gesagt automatisch.
Danke CG
Sourcecode s.u.:
SoundWidget wird auf dem Controller platziert da ich mit QFrame ein Hintergrundbild lade.
Code: Alles auswählen
SoundWidget::SoundWidget( QWidget *_parent): QFrame( _parent )
{
QString styleString = "QWidget{background-image: url(content/pictures/volumeBG.png);}";
this->setStyleSheet(styleString);
this->setFixedSize( 60, 30);
QHBoxLayout *layout = new QHBoxLayout( this );
layout->setSpacing( 0 );
layout->setMargin( 0 );
volumeSlider = new SoundSlider( this, 10, true);
layout->addWidget(volumeSlider);
this->setLayout(layout);
.....
}
Code: Alles auswählen
/* This work is derived from Amarok's work under GPLv2+
- Mark Kretschmann
- Gábor Lehel
*/
#define WLENGTH 55 // px
#define WHEIGHT 30 // px
#define SOUNDMIN 0 // %
#define SOUNDMAX 100 // % 200 OR 400 ?
SoundSlider::SoundSlider( QWidget *_parent, int _i_step, bool b_hard): QAbstractSlider( _parent )
{
f_step = ( _i_step * 100 ) / AOUT_VOLUME_MAX ;
setRange( SOUNDMIN, b_hard ? (2 * SOUNDMAX) : SOUNDMAX );
setMouseTracking( true );
b_isSliding = false;
b_mouseOutside = true;
setOrientation( Qt::Horizontal );
setMaximum( 100 );
setFocusPolicy( Qt::NoFocus );
setValue( 100 );
pixOutside = QPixmap( "content/pictures/volume-dim.png" );
const QPixmap temp( "content/pictures/volume-full.png" );
const QBitmap mask( temp.createHeuristicMask() );
setMinimumSize( pixOutside.size() );
setMaximumSize( pixOutside.size() );
pixGradient = QPixmap( mask.size() );
/* Gradient building from the preferences */
QLinearGradient gradient( paddingL, 2, WLENGTH + paddingL , 2 );
gradient.setColorAt( 0.0, QColor( 255, 255, 255 ) );
//gradient.setColorAt( 0.22, QColor( c(3), c(4), c(5) ) );
//gradient.setColorAt( 0.5, QColor( c(6), c(7), c(8) ) );
gradient.setColorAt( 1.0, QColor( 255, 255, 255 ) );
QPainter painter( &pixGradient );
painter.setPen( Qt::NoPen );
painter.setBrush( gradient );
painter.drawRect( pixGradient.rect() );
painter.end();
pixGradient.setMask( mask );
}
Danke CG
- Dateianhänge
-
- screen.jpg (2.99 KiB) 6234 mal betrachtet
hm... Ich habe ja wie geschrieben den Source von QAbstractSlider durchsucht, aber dort ist, wie du sagst, nichts von einer Anzeige zu finden.
Die Bilder sind definitiv ohne Prozentanzeige, weil selbst gemacht
Wenn du meinen Code anschaust, kannst du sehen, dass ich da auch keine Prozentanzeige bastle. Sehr komisch das Ganze. Irgendwo muss das doch herkommen. Vor allem weil die Zahl sich ja auch ändert bei Mousevents.
Die Bilder sind definitiv ohne Prozentanzeige, weil selbst gemacht
Wenn du meinen Code anschaust, kannst du sehen, dass ich da auch keine Prozentanzeige bastle. Sehr komisch das Ganze. Irgendwo muss das doch herkommen. Vor allem weil die Zahl sich ja auch ändert bei Mousevents.
[gelöst]
LOL ok, der Fehler saß wie so oft ca. 50 cm vor dem Bildschirm
Im VLC QT4-Source gab es noch einen paintEvent, welcher den Text zeichnet und den ich übernommen, aber übersehen habe...
Da war ich echt mal wieder mit Blindheit gesegnet.
Im VLC QT4-Source gab es noch einen paintEvent, welcher den Text zeichnet und den ich übernommen, aber übersehen habe...
Da war ich echt mal wieder mit Blindheit gesegnet.