Qt in Scala(JVM)开发梗概

2012-11-12
    本文将讲述Qt in Scala(JVM)开发梗概。
    前言
    一直有人问Qt的开发情况,希望有个感性的认识。一直也有整理这方面资料的冲动,但时间也很紧迫,所以长话短说。目前将目标锁定Qt Jambi版本吧,熟悉了Qt以后,我对其C++版本的兴趣也十分浓厚,所以,将来再慢慢整理吧。
    本篇文章涉及的开发环境如下:windows xp sp2,JDK6u21,Scala 2.8.0 final,Qt Jambi LGPL 4.5.2_01,IDE选NetBeans吧!
    列出Qt的文档中心的几个重要资源的链接入口:
    ◆Qt Jambi 4.5.2_01的文档索引
    ◆API Javadoc
    ◆CSS样式说明(内容彼此交叉,十分详尽,你只需要有一点点的CSS基础就能明白)
    ◆官方实例
    ◆Qt Jambi 4.5.2_01Binary for Windows 32-bit(点击将自动下载)
    关于Qt的点滴,我会以注释的形式写在代码里面,毕竟都是写代码的,对注释会比较敏感。
    Hello Qt in Scala
    package qt.demo
    import com.trolltech.qt.gui._
    object HelloQt {
    def main(args: Array[String]): Unit = {
    QApplication.initialize(args)
    (new QLabel("Hello Qt"))。show
    QApplication.exec
    }  }
    可能上述代码还能再度简化一下,比如去掉new QLabel两边的括号(但可能会很怪异了)。这个很简单吧,输出结果如下图:
      
    QApplication是Qt的一个全局单例类,就把他看作是一个总控制中心吧。他是一个static类,通过调用QApplication.instance()方法,可获得当前运行过程中的app实例。
    QApplication.instance是一个全局控制实例,这里所定义的内容(可以定义的东西,详细请看手册),除非在实例具体某个对象时有具体设置,否则全局都按照instance的设置进行。当然,其实多数时候,我会用他来控制全局的样式定义。
    好吧,上述的例子实在简单的有些恶心了,我们来些实际一点的东西:
    package qt.demo
    import com.trolltech.qt.gui._  import com.trolltech.qt.core.Qt._
    object CustomWindow {
    val globalStyle = """  * { font-family: Mircosoft Yahei; font-size: 12px; color: #333; }  #mainWindow { border: 40px solid #ccc; border-image: url(classpath:qt/demo/resource/window.png) 40 stretch; }  """
    def main(args: Array[String]): Unit = {
    QApplication.initialize(args)
    QApplication.instance.setStyleSheet(globalStyle)
    val frame = new QFrame() {
    this.setObjectName("mainWindow")
    // 以下为窗体展现定制,应该在show之前调用
    // show以后再调用,会令窗体crash,你需要再次show
    this.setWindowFlags(WindowType.FramelessWindowHint)
    this.setAttribute(WidgetAttribute.WA_TranslucentBackground, true)
    // 由于设定了不使用windows窗体,所以,请手动结束多余的进程
    }
    frame.show()
    QApplication.exec
    }  } 
    截图效果如下:
     
    怎么样,开始有点意思了吧?30行代码连样式,其实想做漂亮的界面,也不是那么难吧!
分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com