QT

QT PYQT SWING JFX Layout 기초 2

QT QT 사이트 Layout 예제중에서 … 사이트에서 제공하는 예제중 GUI 를 구성할 때 많이 사용할 것 같은 2개의 예제를 확인해 보겠습니다. Border Layout Sample https://doc.qt.io/qt-6/qtwidgets-layouts-borderlayout-example.html 이 예제는 Qt Creator에서 소스를 확인할 수 있습니다. Swing, JFX 등에서 유사한 Layout 을 제공 하고 있고, QT 에서 사용자 Layout 을 직접 구성할 때 어떻게 만들어야 하는지를 설명하고 있기 때문에 QT 내부에서 어떤 작업이 진행되었는지 확인하기 좋은 예제 같습니다. QT 예서 예제로 제공하고 있는 소스라 QT 를 설치하면 확인해 볼 수 있는 소스지만, 정리를 위해 필요한 부분을 나열하고 살펴보도록 하겠습니다.

QT PYQT SWING JFX Layout 기초 1

Application Layout GUI 프로그램을 구성할 때, 첫인상을 좌우 하는 것은 전체적인 Widet(Component) 의 배치 입니다. 이를 도와 주는 역할을 담당하는 것이 Layout 인데 언어마다 유사하지만 조금씩 다른 내용을 가지고 있습니다. 각 언어의 Layout 을 모두 하나씩 살펴보는 것은 너무 많기 때문에 이런 것들이 있다 정도로 정리하고자 합니다. 나중에 시간이 되면, 간단한 Toy Project를 구성하면서, 각 언어별 사용법을 정리해 보고자 합니다. 그래도 대부분 제공 하는 것이, 상하,좌우 센터에 Anchor 할 수 있는 Layout, 가로, 세로로 정렬할 수 있는 Layout, Table 처럼 cell 로 정렬할 수 있는 Layout, 자유롭게 배치 할 수 있는 Layout 등이 있습니다.

QT PYQT SWING JFX Program Event 기초

Application 에서 Event 란? 우리가 사용하는 PC, Web, 휴대폰등 거의 모든 IT 기기 혹은 모듈은 사용자가 클릭, 변경, 선택, 이동 등 무엇인가를 했을 때 그 행동에 반응하는 시스템입니다. 뭔지 모를 그 행동을 사건 즉 Event 라고 생각해 보겠습니다. Event 에는 Keyboard 관련한 부분, Mouse 관련한 부분, Touch(Touch Screen) 등에 관련한 부분 등이 있을 것 같습니다. 우리가 사용하는 컴퓨터를 키면, OS 가 로딩되면서 최종 우리가 보는 컴퓨터 첫화면이 나타납니다. OS ( Operating System ) 은 끄기 전까지, 무엇인가 발생할 Event 를 무한 반복하면 기다립니다.

QT PYQT SWING JFX Program 진입지점

GUI Program 시작 앞선 예제에서 Window 창을 뛰우는 간단한 예제를 QT, PYQT, SWING, JFX 로 살펴 보았습니다. 핵심적인 모듈만 띄어서 살펴 보면 다음과 같은 코드 들 입니다. # QT6 QGuiApplicatin app(arac, argv); .. return app.exec(); # PyQT6 app = QApplication(sys.argv) .. app.exec(); # swing JFrame jf = new JFrame("Hello World!!"); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ... jf.setVisible(true); # JFX extends Application ( Applicaiton 상속 ) ... launch(); stage.show(); Java Swing 에서 JFrame 은 Top Level Container 라고 이야기 합니다.

Cross Platform Applications

Cross Platform Application 들 프로그램 개발이 Web일 경우, Service 환경이 Linux 로 구성된 Server 일지라도, Client 환경이 Web Browser 로 접속하게 되기 때문에 Server 환경은 그렇게 중요한 개발 요건이 되지 않습니다. .NET 등의 언어로 개발할 경우 Server 가 MS 계열이어야 하지만, Java 일 경우, 대부분 Linux 이겠지만, 그렇지 않아도 크게 영향을 받지는 않습니다. ( 사실 성능면에서는 차이가 있겠지요 … ^^ ) 하지만, 개발해야 하는 내용이 Application 일 경우 조금 다른 양상을 보이게 됩니다.