2013-08-08 5 views
0

나는 배울 내용에 대한 책이나 튜토리얼을 좋아하지 않으므로 참을성이 없습니다. 즉, 나는 거의 항상 툴체인을 준비 할 것이고, 미친 아이디어가 내 머리에 들어간다해도 코드를 껐을 것입니다.QtJambi는 QApplication을 만들지 않습니다. - Scala

스칼라가 오늘 나의 관심을 불러 일으켰습니다. 시작하기 위해 스칼라 플러그인으로 IDEA를 설치해 보았습니다 ... 지금은 구문에 대한 지식이 있고 스칼라가 굉장한 양의 스콘을 가지고있는 이유는 무엇입니까? Qt, 특히 QtJambi : 내가 모르는 다른 기술로 그것을 밖으로. 나는 IDEA 프로젝트 구조로 QtJambi의 DIST 수입이 조각 썼다 :

import com.trolltech.qt.gui._ 

class MyMainWindow extends QWidget { 
    def showWindow = { 
    setWindowTitle("Scala Jambi Test") 

    resize(250, 250) 
    move(300, 300) 

    show() 
    } 
} 

object MainApp extends QWidget() { 
    def main(args: Array[String]) { 
    QApplication.initialize(args) 

    new MyMainWindow().showWindow 

    QApplication.exec 
    } 
} 

그것은 컴파일하고 실행하지만 난 콘솔에서이 얻을 :

는 QWidget하십시오 QPaintDevice 전에의 QApplication을 구성해야합니다

내가 뭘 잘못하고 있는지에 대한 아이디어는 높이 평가됩니다.

동일한 라이브러리가있는 표준 Java 프로젝트에서 동일한 코드가 작동한다고 추가 할 수 있습니다.

답변

1

문제는 MainApp이 확장되어 QWidget입니다. 확장을 제거하면 모든 것이 파란색으로 처리됩니다. 아무도 이유를 알 수 없다면, 왜 잘못되었는지 알고 싶습니다.

+2

'object' 키워드는 상속에 의한'QWidget'이기도 한'MainApp' 싱글 톤 인스턴스의 생성을 의미합니다. 따라서'MainApp' 객체 인'QWidget'은 실제로'main 'QApplication'을 인스턴스화하는 함수가 호출됩니다. – alexisdm

+0

설명을 위해 많은 감사를드립니다. – Machinarius