Qt 애플리케이션의 창을 관리하기위한 모범 사례 또는 디자인 패턴을 찾고 있습니다.Qt 애플리케이션에서 창을 관리하는 표준화 된 방법이 있습니까?
내가 무슨 뜻인지 설명하겠습니다. 몇 가지 창 (A, B, C)이있는 응용 프로그램이 있고 내에서 window A
을 여는 것과 같은 필요성이 있고 새로운 window A
인스턴스가 호출 될 때마다 유효한 매개 변수가 만들어지고 마지막에 표시해야 할 때 만들어 지는지 확인하십시오. 창 C는 기존 인스턴스가 있으면 새 인스턴스를 만듭니다.
물론 실제 응용 프로그램은 훨씬 더 복잡하고 더 많은 창과 제한이 있으므로 코드 전체에 내 창 관리 작업을 분산시키고 싶지 않고 고정 된 WindowManager
클래스로 유지해야합니다. (사실이 클래스는 싱글 톤이지만 정적 클래스로 변경하려고합니다.)
WindowManager 클래스는 시스템의 각 윈도우에 대해 (개인) QSharedPointer
을 보유하므로 코드의 아무 곳에서나 모든 윈도우를 쉽게 조작 할 수 있습니다. window X
을 보여줄 필요가있을 때 WindowManager::showX(params)
으로 전화하면 모든 코드가 검사되고 초기화됩니다. 또한 일부 로직을 처리하고 시스템 트레이 메시지를 표시 한 다음 창을 최소화하려면 WindowManager::minimizeX()
과 같은 메소드가 있습니다.
일반적인 필요 사항입니까? 문제를 해결하는 일반적인 패턴이 있습니까? 어떻게 사람들이 응용 프로그램의 창을 관리합니까? 내가 한 일은 (정적 WindowManager 클래스) 받아 들일 수 있습니까?
편집 : 응용 프로그램은 시스템 트레이 응용 프로그램이므로 창 간에는 상위 하위 관계가 없습니다. 대신 그들은 모두 서로 독립적이며 일반적으로 사용자는 (글로벌) 단축키로 모든 창을 호출합니다. 그러나 창 안에 다른 것을 열어야하지만 여전히 부모와 자식이 될 수없는 경우가 있습니다.
나는 이것처럼 뒤얽힌 것으로 무엇인가를 썼다고 말할 수 없다. 일반적으로 다양한 대화 상자가있는 기본 창, 필요에 따라 모달 또는 그렇지 않습니다. 특정 윈도우를 처리하는 코드는 해당 윈도우의 클래스로 들어갑니다. 창/대화 상자에 다른 대화 상자가 필요하면 대화 상자의 설정을 관리하지만 논리는 모두 보조 대화 상자의 클래스에 있습니다. 그 모델을 사용하지 못하게하는 것이 있습니까? – casualcoder
일반적으로 부모는 자녀를두고 있습니다. 하위 위젯을 만들고, 구성하고, 표시합니다.메인 윈도우가있는 경우, 메인 윈도우는 종종 많은 보조 윈도우를 처리합니다. 그 많은 코드를 창 생성과 관리에 전념하는 별도의 클래스로 분해 할 수 있다는 것을 알지 못한다. 좋은 디자인이 될 것이다. –
@casualcoder : 실제로 내 응용 프로그램은 대부분 시스템 시간에 시스템 트레이에 있으며 사용자는 다른 (글로벌) 단축키별로 다른 창을 트리거하며 창 간에는 상위 - 하위 관계가 없습니다. 창은 다른 창에서 호출하거나 단축키로 열 수 있습니다. 그것은 저에게 그런 질문을합니다. – destan