Você está na página 1de 10

Ring Documentation, Release 1.

56.43 KeyPress and Mouse Move Events

In this example we will learn how to use the Events Filter to know about KeyPress and Mouse Move Events
Load "guilib.ring"

new qApp {

win1 = new qWidget()


{
setWindowTitle("Test using Event Filter!")
setGeometry(100,100,400,400)
setmousetracking(true)
myfilter = new qallevents(win1)
myfilter.setKeyPressEvent("pWork()")
myfilter.setMouseButtonPressevent("pClick()")
myfilter.setmousemoveevent("pMove()")

installeventfilter(myfilter)

show()
}

exec()
}

func pWork
win1.setwindowtitle('KeyPress! : ' + myfilter.getkeycode())

func pClick
new qmessagebox(win1) {
setgeometry(100,100,400,100)
setwindowtitle("click event!")
settext("x : " + myfilter.getx() +
" y : " + myfilter.gety() + " button : " +
myfilter.getbutton() )
show()
}

func pMove
win1.setwindowtitle("Mouse Move , X : " + myfilter.getx() +
" Y : " + myfilter.gety() )

The application during the runtime

56.43. KeyPress and Mouse Move Events 585


Ring Documentation, Release 1.5

56.44 Moving Objects using the Mouse

In the next example we will learn how to program movable objects where the user can move a label
Load "guilib.ring"

lPress = false
nX = 0
nY = 0

new qApp {

win1 = new qWidget()


{

setWindowTitle("Move this label!")


setGeometry(100,100,400,400)
setstylesheet("background-color:white;")

Label1 = new qLabel(Win1){


setGeometry(100,100,200,50)
setText("Welcome")
setstylesheet("font-size: 30pt")
myfilter = new qallevents(label1)
myfilter.setEnterevent("pEnter()")
myfilter.setLeaveevent("pLeave()")

56.44. Moving Objects using the Mouse 586


Ring Documentation, Release 1.5

myfilter.setMouseButtonPressEvent("pPress()")
myfilter.setMouseButtonReleaseEvent("pRelease()")
myfilter.setMouseMoveEvent("pMove()")
installeventfilter(myfilter)
}

show()
}

exec()
}

Func pEnter
Label1.setStyleSheet("background-color: purple; color:white;font-size: 30pt;")

Func pLeave
Label1.setStyleSheet("background-color: white; color:black;font-size: 30pt;")

Func pPress
lPress = True
nX = myfilter.getglobalx()
ny = myfilter.getglobaly()

Func pRelease
lPress = False
pEnter()

Func pMove
nX2 = myfilter.getglobalx()
ny2 = myfilter.getglobaly()
ndiffx = nX2 - nX
ndiffy = nY2 - nY
if lPress
Label1 {
move(x()+ndiffx,y()+ndiffy)
setStyleSheet("background-color: Green;
color:white;font-size: 30pt;")
nX = nX2
ny = nY2
}

ok

The application during the runtime

56.44. Moving Objects using the Mouse 587


Ring Documentation, Release 1.5

56.44. Moving Objects using the Mouse 588


Ring Documentation, Release 1.5

56.44. Moving Objects using the Mouse 589


Ring Documentation, Release 1.5

56.45 Inheritance from GUI Classes

Example :
Load "guilib.ring"

New MyWindow()

new qApp { exec() }

class mywindow from qwidget


Func init
super.init()
setwindowtitle("First Window")
setgeometry(100,100,400,400)
setstylesheet("background-color: purple;")
settooltip("my first window!")
show()

The application during the runtime

56.45. Inheritance from GUI Classes 590


Ring Documentation, Release 1.5

56.46 Using QDesktopWidget Class

In the next example we will learn about using the QDesktopWidget class
Load "guilib.ring"

New qApp {
win1 = New qWidget()
{
resize(400,400)
btn1 = new qPushbutton(win1)
{
setText("Center")
move(100,100)
resize(100,30)
setClickEvent("pCenter()")
}

Show()
}

exec()
}

Func pCenter
oDesktop = new qDesktopWidget()

56.46. Using QDesktopWidget Class 591


Ring Documentation, Release 1.5

oRect = oDesktop.screenGeometry( oDesktop.primaryScreen() )


win1.move((oRect.width()-win1.width()) /2 , (oRect.Height()-win1.Height())/2 )
win1.show()

The application during the runtime

56.47 Rotate Text

The next example rotate text using a Timer.


Load "guilib.ring"

nAngle = 0

New qapp {
win1 = new qwidget() {
setwindowtitle("Rotate Text")
resize(800,600)
label1 = new qlabel(win1) {
settext("")
myfilter = new qallevents(win1)
myfilter.setMouseButtonPressevent("pClick()")
installeventfilter(myfilter)
}
new qtimer(win1) {
setinterval(50)

56.47. Rotate Text 592


Ring Documentation, Release 1.5

settimeoutevent("pTime()")
start()
}
pDraw()
L1 = new qVBoxLayout() { AddWidget(Label1) } SetLayout(L1)
showMaximized()
}
exec()
}

Func pDraw
p1 = new qpicture()
color = new qcolor() {
setrgb(0,0,255,255)
}
pen = new qpen() {
setcolor(color)
setwidth(50)
}
painter = new qpainter() {
begin(p1)
setpen(pen)
myfont = font()
myfont.setpointsize(50)
setfont(myfont)
rotate(nAngle)
drawtext(350,0*nAngle,"welcome")
drawtext(0,0*nAngle,"welcome")
endpaint()
}
label1 {
setpicture(p1)
show()
}

Func pClick
win1 { setwindowtitle("Click Event") }

Func pTime
nAngle++
if nAngle = 90
nAngle = 10
ok
pDraw()

The application during the runtime

56.47. Rotate Text 593


Ring Documentation, Release 1.5

56.48 Change Focus

The next example change the focus using the ENTER key.
load "guilib.ring"

new qApp {
win = new qWidget() {
resize(600,600)
SetWindowTitle("Change Focus")
text1 = new qLineEdit(win)
text2 = new qLineEdit(win)
text3 = new qLineEdit(win)
text4 = new qLineEdit(win)
layout1 = new qVBoxLayout() {
AddWidget(text1)
AddWidget(text2)
AddWidget(text3)
AddWidget(text4)

}
setLayout(Layout1)

56.48. Change Focus 594

Você também pode gostar