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
endEn 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.