You are on page 1of 10

Ring Documentation, Release 1.5.

Load "guilib.ring"

New QApp {

Win1 = New QWidget () {

SetGeometry(100,100,400,400)
SetWindowTitle("Input Dialog")

New QPushButton(win1)
{

SetText ("Input Dialog")


SetGeometry(100,100,100,30)
SetClickEvent("pWork()")
}

Show()
}

exec()
}

Func pWork
oInput = New QInputDialog(win1)
{
setwindowtitle("What is your name?")
setgeometry(100,100,400,50)
setlabeltext("User Name")
settextvalue("Mahmoud")
lcheck = exec()
if lCheck win1.setwindowtitle(oInput.textvalue()) ok
}

The application during the runtime

56.42. Using QInputDialog Class 625


Ring Documentation, Release 1.5.4

56.43 Dialog Functions

We have the next functions


SetDialogIcon(cIconFile)
MsgInfo(cTitle,cMessage)
ConfirmMsg(cTitle,cMessage) --> lResult
InputBox(cTitle,cMessage) --> cValue
InputBoxInt(cTitle,cMessage) --> nValue
InputBoxNum(cTitle,cMessage) --> nValue
InputBoxPass(cTitle,cMessage) --> cValue

Example
load "guilib.ring"

new qApp
{
SetDialogIcon("notepad.png")
msginfo(:Ring,:Welcome)
see confirmMsg(:Ring,"Are you sure?") + nl
see InputBoxNum(:Ring,"Enter Number(double) :") + nl
see InputBox(:Ring,"Enter Value :") + nl
see InputBoxInt(:Ring,"Enter Number(int)") + nl
see InputBoxPass(:Ring,"Enter Password") +nl
}

56.43. Dialog Functions 626


Ring Documentation, Release 1.5.4

56.44 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.44. KeyPress and Mouse Move Events 627


Ring Documentation, Release 1.5.4

56.45 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.45. Moving Objects using the Mouse 628


Ring Documentation, Release 1.5.4

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.45. Moving Objects using the Mouse 629


Ring Documentation, Release 1.5.4

56.45. Moving Objects using the Mouse 630


Ring Documentation, Release 1.5.4

56.45. Moving Objects using the Mouse 631


Ring Documentation, Release 1.5.4

56.46 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.46. Inheritance from GUI Classes 632


Ring Documentation, Release 1.5.4

56.47 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.47. Using QDesktopWidget Class 633


Ring Documentation, Release 1.5.4

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.48 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.48. Rotate Text 634

You might also like