Sei sulla pagina 1di 10

Ring Documentation, Release 1.5.

Func theTime
return "Time : " + Time()

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

55.31. Display Scaled Image using QLabel 585


Ring Documentation, Release 1.5.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)

55.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()
}

55.32. Using the QFileDialog Class 586


Ring Documentation, Release 1.5.2

exec()
}

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

The application during the runtime

55.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()
}

55.33. Drawing using QPainter 587


Ring Documentation, Release 1.5.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

55.33. Drawing using QPainter 588


Ring Documentation, Release 1.5.2

55.34 Printing using QPrinter

In this example we will learn how to print to PDF file using QPrinter
Load "guilib.ring"
new qApp {
win1 = new qwidget() {
setwindowtitle("Printer")
setgeometry(100,100,500,500)
myweb = new qwebview(win1) {
setgeometry(100,100,1000,500)
loadpage(new qurl("http://google.com"))
}
new qpushbutton(win1) {
setGeometry(20,20,100,30)
settext("Print")
setclickevent("print()")
}
showmaximized()

55.34. Printing using QPrinter 589


Ring Documentation, Release 1.5.2

}
exec()
}

func print
printer1 = new qPrinter(0) {
setoutputformat(1) # 1 = pdf
setoutputfilename("test.pdf")
painter = new qpainter() {
begin(printer1)
myfont = new qfont("Times",50,-1,0)
setfont(myfont)
drawtext(100,100,"test")
printer1.newpage()
drawtext(100,100,"test2")
endpaint()
}
}

printer1 = new qPrinter(0) {


setoutputformat(1)
setoutputfilename("test2.pdf")
myweb.print(printer1)
myweb.show()
}

system ("test.pdf")
system ("test2.pdf")

55.35 Creating More than one Window

The next example demonstrates how to create more than one window
Load "guilib.ring"
app1 = new qapp {
win1 = new qwidget() {
setwindowtitle("First")
setgeometry(100,100,500,500)

new qpushbutton(win1) {
setgeometry(100,100,100,30)
settext("close")
setclickevent("app1.quit()")
}

new qpushbutton(win1) {
setgeometry(250,100,100,30)
settext("Second")
setclickevent("second()")
}

showmaximized()
}
exec()
}

55.35. Creating More than one Window 590


Ring Documentation, Release 1.5.2

func second
win2 = new qwidget() {
setwindowtitle("Second")
setgeometry(100,100,500,500)
setwindowflags(Qt_dialog)
show()
}

The application during the runtime

55.36 Playing Sound

Example:
Load "guilib.ring"
new qapp {
win1 = new qwidget() {
setwindowtitle("play sound!") show()
}
new qmediaplayer() {
setmedia(new qurl("footstep.wav"))
setvolume(50) play()
}
exec()
}

55.37 Using the QColorDialog Class

Example:

55.36. Playing Sound 591


Ring Documentation, Release 1.5.2

Load "guilib.ring"

oApp = new myapp { start() }

Class MyApp

oColor win1

Func start

myapp = new qapp

win1 = new qMainWindow() {


setwindowtitle("Color Dialog")
setgeometry(100,100,400,400)
}

new qpushbutton(win1) {
setgeometry(10,10,100,30)
settext("Get Color")
setclickevent("oApp.pColor()")
}

win1.show()
myapp.exec()

Func pColor
myobj = new qcolordialog()
aColor = myobj.GetColor()
r=acolor[1] g=acolor[2] b=acolor[3]
win1.setstylesheet("background-color: rgb("+r+", " + g+ "," + b + ")")

The application during the runtime

55.37. Using the QColorDialog Class 592


Ring Documentation, Release 1.5.2

55.38 Using qLCDNumber Class

In this example we will learn about using the qLCDNumber class


Load "guilib.ring"

New qApp
{
win1 = new qWidget()
{
setwindowtitle("LCD Number")
setgeometry(100,100,250,120)

new qLCDNumber(win1)
{
setgeometry(10,10,100,40)
display(100)

new qLCDNumber(win1)
{
setgeometry(10,60,100,40)
display(80)

show()
}

exec()
}

The application during the runtime

55.39 Movable Label Example


Load "guilib.ring"

new qApp {

win1 = new qWidget()


{

55.38. Using qLCDNumber Class 593


Ring Documentation, Release 1.5.2

label1 = new qLabel(win1)


{
setText("Welcome")
setgeometry(10,10,200,50)
setstylesheet("color: purple ; font-size: 30pt;")
}

new qTimer(win1)
{
setInterVal(10)
setTimeOutEvent("pMove()")
start()
}

setWindowTitle("Movable Label")
setgeometry(100,100,600,80)
setStyleSheet("background-color: white;")
show()

exec()
}

Func pMove
label1
{
move(x()+1,y())
if x() > 600
move(10,y())
ok
}

The application during the runtime

55.40 QMessagebox Example

In this section we will learn how to check the output of the Message box
Load "guilib.ring"

new qApp {
win1 = new qWidget()
{
label1 = new qpushbutton(win1)
{
setText("Test")
setgeometry(10,10,200,50)

55.40. QMessagebox Example 594

Potrebbero piacerti anche