You are on page 1of 10

Ring Documentation, Release 1.

47.27 QLineEdit Events and QMessageBox

In this example we will learn about using QLineEdit Events and displaying a Messagebox
Load "guilib.ring"

MyApp = New qApp {

win1 = new qWidget() {

setwindowtitle("Welcome")
setGeometry(100,100,400,300)

label1 = new qLabel(win1) {


settext("What is your name ?")
setGeometry(10,20,350,30)
setalignment(Qt_AlignHCenter)
}

btn1 = new qpushbutton(win1) {


setGeometry(10,200,100,30)
settext("Say Hello")
setclickevent("pHello()")
}

btn1 = new qpushbutton(win1) {


setGeometry(150,200,100,30)
settext("Close")
setclickevent("pClose()")
}

lineedit1 = new qlineedit(win1) {


setGeometry(10,100,350,30)
settextchangedevent("pChange()")
setreturnpressedevent("penter()")
}

47.27. QLineEdit Events and QMessageBox 420


Ring Documentation, Release 1.2

show()
}

exec()
}

Func pHello
lineedit1.settext( "Hello " + lineedit1.text())

Func pClose
MyApp.quit()

Func pChange
win1 { setwindowtitle( lineedit1.text() ) }

Func pEnter
new qmessagebox(win1) {
setwindowtitle("Thanks")
settext("Hi " + lineedit1.text() )
setstylesheet("background-color : white")
show()
}

The application during the runtime

47.27. QLineEdit Events and QMessageBox 421


Ring Documentation, Release 1.2

47.28 Other Widgets Events

Each Qt signal can be used in RingQt, just add Set before the signal name and add event after the signal name to get
the method that can be used to determine the event code.
For example the QProgressBar class contains a signal named valueChanged() To use it just use the function setVal-
ueChangedEvent()
Example:
Load "guilib.ring"

New qApp {
win1 = new qMainWindow() {

setwindowtitle("QProgressBar valueChanged Event")

progress1 = new qprogressbar(win1) {


setGeometry(100,100,350,30)
setvalue(10)
setvaluechangedevent("pChange()")
}

new qpushbutton(win1) {
setGeometry(10,10,100,30)
settext("increase")
setclickevent("pIncrease()")
}

showMaximized()

47.28. Other Widgets Events 422


Ring Documentation, Release 1.2

exec()
}

func pIncrease
progress1 { setvalue(value()+1) }

func pchange
win1.setwindowtitle("value : " + progress1.value() )

The application during the runtime

Another example for the stateChanged event of the QCheckBox class


Load "guilib.ring"

New qApp {
win1 = new qMainWindow() {
setwindowtitle("QCheckBox")
new qcheckbox(win1) {
setGeometry(100,100,100,30)
settext("New Customer!")
setstatechangedevent("pchange()")
}
showMaximized()
}
exec()
}

Func pChange

new qMessageBox(Win1) {
setWindowTitle("Checkbox")
settext("State Changed!")
show()
}

The application during the runtime

47.28. Other Widgets Events 423


Ring Documentation, Release 1.2

47.29 Using the QTimer Class

In this example we will learn about using the QTimer class


Load "guilib.ring"

new qApp {
win1 = new qwidget() {
setgeometry(100,100,200,70)
setwindowtitle("Timer")
label1 = new qlabel(win1) {
setgeometry(10,10,200,30)
settext(thetime())
}
new qtimer(win1) {
setinterval(1000)
settimeoutevent("pTime()")
start()
}
show()
}
exec()
}

func ptime
label1.settext(thetime())

Func thetime
return "Time : " + Time()

The application during the runtime

47.29. Using the QTimer Class 424


Ring Documentation, Release 1.2

47.30 Using QProgressBar and Timer

In this example we will learn about using the animated QProgressBar class and Timer
###------------------------------------
### ProgressBar and Timer Example

Load "guilib.ring"

new qApp
{
win1 = new qwidget()
{
setgeometry(100,100,400,100)
setwindowtitle("Timer and ProgressBar")

LabelMan = new qlabel(win1)


{
setgeometry(10,10,200,30)
settext(theTime()) ### ==>> func
}

TimerMan = new qtimer(win1)


{
setinterval(1000)
settimeoutevent("pTime()") ### ==>> func
start()
}

BarMan = new qprogressbar(win1)


{
setGeometry(100,50,300,10) ### Position X y, Length, Thickness
setvalue(0) ### Percent filled
}

show()
}
exec()
}

func pTime
LabelMan.settext(theTime()) ### ==>> func

Increment = 10
if BarMan.value() >= 100 ### ProgressBar start over.
BarMan.setvalue(0)
ok
BarMan{ setvalue(value() + Increment) }

47.30. Using QProgressBar and Timer 425


Ring Documentation, Release 1.2

Func theTime
return "Time : " + Time()

47.31 Display Scaled Image using QLabel

In this example we will learn about displaying and scaling an image so that it looks animated using the QLabel
widget
Load "guilib.ring"

#----------------------------------------------------
# REQUIRES: image = "C:\RING\bin\stock.jpg"

# imageStock: start dimensions for growing image

imageW = 200 ; imageH = 200 ; GrowBy = 4

###----------------------------------------------------
### Window and Box Size dimensions

WinWidth = 1280 ; WinHeight = 960


BoxWidth = WinWidth -80 ; BoxHeight = WinHeight -80

###----------------------------------------------------

New qapp {

win1 = new qwidget() {

setgeometry(50,50, WinWidth,WinHeight)
setwindowtitle("Animated Image - Display Image Scaled and Resized")

imageStock = new qlabel(win1) {

image = new qpixmap("C:\RING\bin\stock.jpg")


AspectRatio = image.width() / image.height()

imageW = 200
imageH = imageH / AspectRatio

### Size-H, Size-V, Aspect, Transform


setpixmap(image.scaled(imageW , imageH ,0,0))

PosLeft = (BoxWidth - imageW ) / 2


PosTop = (BoxHeight - imageH ) / 2

47.31. Display Scaled Image using QLabel 426


Ring Documentation, Release 1.2

setGeometry(PosLeft,PosTop,imageW,imageH)

TimerMan = new qtimer(win1) {


setinterval(100) ### interval 100 millisecs.
settimeoutevent("pTime()") ### ==>> func
start()
}

show()
}
exec()
}

###------------------------------------------------------
### Fuction TimerMan: calling interval 100 milliseconds

func pTime

### Stop Timer when image is size of Window area


if imageW > BoxWidth
TimerMan.stop()
imageStock.clear() ### Will clear the image
ok

### Grow image


imageW += GrowBy
imageH = imageW / AspectRatio

### Scaled Image: Size-H, Size-V, Aspect, Transform


imageStock.setpixmap(image.scaled(imageW , imageH ,0,0))

### Center the image


PosLeft = (WinWidth - imageW ) / 2
PosTop = (WinHeight - imageH ) / 2
imageStock.setGeometry(PosLeft,PosTop,imageW,imageH)

47.32 Using the QFileDialog Class

Example
Load "guilib.ring"

New qapp {
win1 = new qwidget() {
setwindowtitle("open file")
setgeometry(100,100,400,400)
new qpushbutton(win1) {
setgeometry(10,10,200,30)
settext("open file")
setclickevent("pOpen()")
}
show()
}

47.32. Using the QFileDialog Class 427


Ring Documentation, Release 1.2

exec()
}

Func pOpen
new qfiledialog(win1) {
cName = getopenfilename(win1,"open file","c:\","source files(*.ring)")
win1.setwindowtitle(cName)
}

The application during the runtime

47.33 Drawing using QPainter

In this example we will learn about drawing using the QPainter class
Load "guilib.ring"
New qapp {
win1 = new qwidget() {
setwindowtitle("Drawing using QPainter")
setgeometry(100,100,500,500)
label1 = new qlabel(win1) {
setgeometry(10,10,400,400)
settext("")
}
new qpushbutton(win1) {
setgeometry(200,400,100,30)
settext("draw")
setclickevent("draw()")
}

show()
}

47.33. Drawing using QPainter 428


Ring Documentation, Release 1.2

exec()
}

Func draw
p1 = new qpicture()
color = new qcolor() {
setrgb(0,0,255,255)
}
pen = new qpen() {
setcolor(color)
setwidth(10)
}
new qpainter() {
begin(p1)
setpen(pen)
drawline(500,150,950,450)
drawline(950,550,500,150)
endpaint()
}
label1 { setpicture(p1) show() }

The application during the runtime

47.33. Drawing using QPainter 429

You might also like