[Kde-bindings] Ruby, sendEvent and KDE
Stefan Champailler
schampailler at easynet.be
Fri Oct 14 16:13:43 UTC 2005
Dear All,
I'm now facing a problem with sendEvent. The deal is this : I have a
KDE::HTMLPart in a KDE::MainWindow that I use as a web browser. I'd
like to simulate a mouse cursor move over on particular place on the
view of the browser and a mouse click there. For example, open the
www.kde.org and click on the "announcement" link.
I've written a piece of code that so far can display the browser and
move the mouse cursor on the link I want :
p = Qt::Point.new(30,30)
p_global = self.mapToGlobal(p)
Qt::Cursor.setPos( p_global)
KDE::Application::kApplication.processEvents()
The next thing I want to do is the "click". So I do :
current_widget =
KDE::Application::kApplication.widgetAt( p_global)
mouseEvent( current_widget, Qt::Event::MouseButtonPress, p,
p_global, Qt::RightButton, 0)
mouseEvent( current_widget, Qt::Event::MouseButtonRelease, p,
p_global, Qt::RightButton, 0)
with
def mouseEvent( target, type, pos, global_pos,button, state)
res = Qt::Application::sendEvent( target,
Qt::MouseEvent.new( type, target.rect().center(), button,
state))
puts "Cant send event to target" if !res
end
problem is the sendEvent always returns false and the click never
occurs.
If I add an event filter I can see that the events I'm sending
arrives to the widget.
I've been coding ruby/qt/korundum for 2 days so far so I'm quite
newbie... I'va also checked Qt Test Lib from TrollTech but I think I
do things like them. The big difference is that to simplify my code
(i.e. no good reason :)), all this code is part of the MainWindow
object :
class MainWindow < KDE::MainWindow
which I use like this :
a = KDE::Application.new()
window = MainWindow.new( "Tutorial - p4", a )
window.resize( 1200, 800 )
a.setTopWidget( window)
window.show
a.exec
help would be much appreciated !
Stefan
More information about the Kde-bindings
mailing list