Plasmoidia taas tekemässä, tungen tuosta periviä olioita kolme päällekäin QGraphicsLinearLayoutiin:
class MonitorItem < Qt::GraphicsWidget slots 'update()', 'set_update_interval(QInt32)' def initialize parent, label, interval super parent @lay = Qt::GraphicsLinearLayout.new Qt::Horizontal, self @lay.spacing = 0.0 @label = Plasma::Label.new self @label.alignment = Qt::AlignLeft @label.set_text label @value = Plasma::Label.new self @value.alignment = Qt::AlignRight @lay.add_item @label @lay.add_item @value layout = @lay @update_interval = interval @timer = Qt::Timer.new connect @timer, SIGNAL('timeout()'), self, SLOT('update()') update @timer.start @update_interval end def update @value.set_text 'Implement update-method!' end def set_update_interval interval @update_interval = interval @timer.set_interval interval end end
En kuitenkaan saa widgettejä ~kiinni toisiinsa, vaan ne jättää hirveän marginaalin aina.
Kokeiltu tähän mennessä:
margin: 0; padding: 0;
@label.margin = 0; @label.native_widget.margin = 0
, ja sama @valuelle@label.set_contents_margins 0, 0, 0, 0; @label.native_widget.set_contents_margins 0, 0, 0,
, ja sama @valuelleHyviä ideoita otetaan vastaan.
Tuossa, jos joku sitä ite ajaa: http://home.nyan.fi/~blaze/nyanmon.zip
Vastaus löytyi irkistä (korvantakaarapsutukset Smarrelle): ylikirjota oletus-sizePolicy ja -sizeHint tuolta MonitorItemiltä.
# Overrides default implementation, to pack widgets tighter def sizePolicy Qt::SizePolicy.new Qt::SizePolicy::Preferred, \ Qt::SizePolicy::ShrinkFlag end # Overrides default implementation, to pack widgets tighter def sizeHint which, constraint size = super size.set_height @font_size * 1.5 return size end
Aihe on jo aika vanha, joten et voi enää vastata siihen.