Submitted by admin on Mon, 02/01/2010 - 21:21
การเปลี่ยน font ที่ใช้ใน Application
เมื่อทำการติดตั้ง Qt4 เป็นที่เรียบร้อยแล้ว โปรแกรมยอดฮิตที่เรามักจะรันคือ fluidlauncher
# ./fluidlauncher -qws

และคำถามที่มักจะตามมาคือ font เล็กจัง จะเปลี่ยน font ยังไง
Qt จะเก็บ font ไว้ภายใต้ directory /usr/local/Qt/lib/fonts ซึ่งจะมีดังนี้
DejaVuSans-Bold.ttf fixed_70_50.qpf |
ในการเปลี่ยน font ที่จะรัน เราสามารถใช้ option -fn ต่อท้ายคำสั่งเพื่อกำหนด font
จากตัวอย่างเราจะลองเปลี่ยน font เป็น unifont ดังนี้
# ./fluidlauncher -qws -fn unifont
จะสังเกตุเห็นว่า font ที่ใช้ใน Application จะเปลี่ยนไปตามที่เรากำหนด

แต่เมื่อลองเลือกรัน Application stylesheets จาก fluidlauncher จะเห็นว่า font ที่ใช้ใน stylesheet ยังเป็นตัวเล็กอยู่


สาเหตุที่เป็นเช่นนี้เนื่องจาก stylesheets จะเป็น application อีกตัวที่ถูกเรียกใช้จาก fluidlauncher โดยไม่ได้ผ่านข้อมูลเกี่ยวกับ font ไปให้
fluidlauncher จะใช้ไฟล์ที่อยู่ใน directory เดียวกันชื่อ config.xml เป็นตัวกำหนดรายละเอียดของชื่อโปรแกรมและพารามิเตอร์ที่จะรัน ดังนั้นหากเราต้องการเปลี่ยน font ก็ให้เปิดไฟล์ config.xml และเพิ่ม option -fn ดังนี้
<example filename="../embeddedsvgviewer/embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer.png" args="../embeddedsvgviewer/shapes.svg" args="-fn unifont"/> |
จะเห็นว่า application จะถูก launch ด้วย font ที่เรากำหนด

การหมุนจอภาพ
การหมุนจอภาพจำเป็นต้องใช้ driver ตัวนึงที่ชื่อว่า Transformed ซึ่งจะถูกสร้างขึ้นมาพร้อมกับระบบโดยเราต้องระบุ feature ดังนี้ -qt-gfx-transformed ในขั้นตอนการ configure (ดูใน การสร้าง Qt4.5.3 และ Qt4.6 สำหรับ mini2440 หัวข้อที่ 5)
การใช้งานสามารถระบุได้ทั้งจาก Environment Variables ดังนี้
# export QWS_DISPLAY=tansformed:rot90
หรือจะเป็น option ต่อท้าย application ก็ได้ดังนี้
# ./deform -qws -fn unifont -display "transformed:rot90"
หลังจากนั้นเมื่อรัน application จอภาพก็จะหมุนไป 90 องศาตามต้องการ

การทำ Remote Desktop ด้วย VNC
VNC (Virtual Network Computing) เป็นเทคนิคในการแชร์จอภาพ คีย์บอร์ด และ เมาส์ ด้วยกันจากคอมพิวเตอร์ตัวหนึ่งไปยังอีกตัวหนึ่ง ทำให้คอมพิวเตอร์อีกตัวสามารถเห็นภาพของคอมพิวเตอร์อีกตัวหนึ่งและควบคุมได้ด้วย ข้อดีของ VNC คือเป็น Open Source และไม่ยึดติดกับ Operating System
เราจะมาลองดึงภาพจากจอ lcd ของ mini2440 มายังจอพีซี และควบคุมโปรแกรมที่วิ่งบน mini2440 ผ่านคีย์บอร์ดและเมาส์ของพีซีกันนะครับ
สิ่งที่ต้องมีคือ
- ระบบ Qt ที่มี VNC Driver ซึ่งสามารถกำหนดได้ในขั้นตอน configure ด้วยการเพิ่ม option ดังนี้ -qt-gfx-vnc (ดูใน การสร้าง Qt4.5.3 และ Qt4.6 สำหรับ mini2440 หัวข้อที่ 5)
- โปรแกรม vncviewer สำหรับวิ่งบนวินโดวส์ดาวโหลดได้จาก http://www.tightvnc.com/download/1.3.10/tightvnc-1.3.10_x86_viewer.zip การใช้โปรแกรม vncviewer ทำได้ง่ายดายเพียงแต่แตกไฟล์โดยไม่ต้องติดตั้ง เวลาจะรันก็เพียงแต่เปิดไฟล์ vncviewer.exe เท่านั้น
ขั้นตอนในการใช้งาน
1. ใช้คำสั่ง ifconfig ที่ mini2440 เพื่อตรวจสอบดูว่า ip address ของ mini2440 คืออะไร ในที่นี้กำหนดให้เป็น 192.168.1.101
2. VNC Driver ในมุมมองของ Qt แล้วคือจอตัวหนึ่งซึ่ง defualt จะกำหนดให้มีขนาด 640x480 พิกเซล เราสามารถที่จะทำการเปลี่ยนแปลงค่า default นี้ได้
3. ลองมารัน application textedit กันนะครับ
# cd /usr/local/Qt/demos/textedit |
เราเริ่มต้นด้วยการรัน textedit โดยกำหนดให้ใช้ font unifont และให้แสดงผลไปยัง vnc driver ที่กำหนดให้มีขนาด 720x480 จำนวนสีต่อพิกเซล 32
เราจะไม่เห็นอะไรปรากฏบนหน้าจอ lcd เพราะขณะนี้เอาพุทของโปรแกรมจะวิ่งไปหา vnc โปรดสังเกตุข้อความ QVNCServer created on port 5900 ซึ่งหมายความว่าขณะนี้ VNCServer ได้ทำการรันแล้วโดยใช้พอร์ทหมายเลข 5900 ซึ่งเป็นหมายเลขที่ vnc นิยมใช้
หมายเหตุ อย่าลืมเปิด firewall บน windows ให้อนุญาติใช้ port 5900 ด้วยนะครับ
4. เปิดโปรแกรม vncviewer.exe แล้วเรียกไปยัง ipaddress ของ mini2440 ดังนี้

หลังจากกดปุ่ม connect ก็จะเห็นโปรแกรม textedit ที่วิ่งบน mini2440 ปรากฏบน vncviewer
กดปุ่ม maximize มุมบนขวาของโปรแกรม textedit เพื่อให้โปรแกรมเต็มจอ vnc เราก็จะสามารถที่จะใช้ keyboard และ mouse เหมือนโปรแกรมปกติทั่วไป

ภาพตัวอย่างการวิ่ง fluidlauncher ด้วย default size (640x480)
# ./fluidlauncher -qws -fn unifont -display "VNC"

ตัวอย่างการวิ่ง deform บน mini2440 และให้มาแสดงผลบน vnc ที่วิ่งบน PC จะเห็นว่าความเร็วพอใช้ได้ทีเดียว
# export QWS_SIZE=240x320 |
ท้ายที่สุดนี้ถ้าต้องการที่จะรันและให้แสดงผลบน lcd ของ mini2440 และ vnc บน PC ไปพร้อมๆกันสามารถทำได้โดย กำหนด display ให้เป็น vnc over framebuffer ดังนี้
# export QWS_SIZE=240x320 |
หวังว่าคงสนุกกับการใช้งาน Qt ในรูปแบบต่างๆนะครับ
อ้างอิง
Qt for Embedded Linux Display Management
Qt for Embedded Linux Environment Variables
Running Qt for Embedded Linux Applications