2012-04-13 4 views
1

을 호출합니다. QStackedWidget에 여러 개의 QPushButton 버튼이 있습니다. 위젯의 상위 위젯은 QMainWindow입니다. QStackedWidget 안에는 QLineEdit도 있습니다. 원하는 작업은 간단합니다. 텍스트 상자가 포함 된 양식의 유효성을 검사하고 데이터를 처리 할 사용자 정의 클래스의 함수를 모두 호출하면됩니다. 클래스의 인스턴스는 내 QMainWindow 클래스 내에 만들어집니다. 그 클래스의 메서드를 호출하는 가장 좋은 방법은 무엇입니까? 내 사용자 정의 클래스를 QStackedWidget 내부의 위젯 인스턴스에 연결하는 Qt의 신호/슬롯 메커니즘을 사용해야합니까?Qt를 사용하여 부모 위젯 함수

답변

3

을 필요한만큼 여러 번 파생시키고 유효성 검사가 필요한 각 필드에 유효성 검사기를 설치할 수 있습니다. 이렇게하면 필드가 비어 있거나 유효한 항목이 포함됩니다.

데이터를 처리하기 전에 모든 해당 필드에 데이터가 있는지 확인한 다음 유효한 양식이 있음을 보장해야합니다.

양식에서 양식 사용자의 일부 소비자에게 데이터를 전달하는 일반적인 방법은 데이터를 보유 할 중간 남자 클래스를 만드는 것입니다. 폼의 유효성을 검사 한 후 클래스의 인스턴스가 채워지고 인스턴스가 소비자에게 전달됩니다. 이렇게하면 양식에 변경 사항이있는 경우 동일한 데이터가 수집되는 경우 소비자가 이러한 변경 사항으로부터 격리됩니다.

일반적인 규칙은 구현이 아닌 개체 인터페이스에 대해 작업하는 것입니다. 당신이 염두에 두어야 할 몇 가지 사항을 염두에두면 sig/slot이나 직접 함수 호출을할지 여부는 중요하지 않습니다.

시그마/슬롯은 호출 순서를 보장하지 않으며 본질적으로이 신호를 볼 수있는 사람을 의미합니다 객체가 신호에 연결하여이 변경 사항을 선택할 수 있습니다. 이 하위 구성 요소별로 양식 데이터를 처리하는 순서를 보장해야하는 경우 유지 보수 프로그래머에게 엉망인 옵션을 제공해야하는 이유는 무엇입니까?

두 번째로, 여기서 개체가 상주해야합니다. 데이터 소비자가 매우 복잡해지고 어떤 시나리오 (어쩌면 사용자 개인 또는 오늘 날짜 또는 현재 온도, 나도 모르겠다)를 기반으로 다른 사용자를 스냅하려는 언젠가는 다시 아치를하고 싶다. 소비자에게 데이터를 가져 오기위한 논리가 양식의 특정 방법에있는 객체에 크게 의존하는 경우 잘못 처리하고있는 것입니다.

+0

데이터를 확인한 후에 이러한 데이터를 맞춤 클래스에 전달해야합니다. 이 경우 신호/슬롯 시스템이 적절합니까? 아니면 다른 것을 사용해야합니까? – Stefano

+0

@Stefano 데이터가 유효화 된 지점 이후에 어떤 신호/슬롯이이 작업과 관련이 있다고 생각하지 않습니다. 원하는대로 할 수 있습니다. 모든 필드에서 유효한 데이터가 있는지 살펴보고 확인할 때 신호/슬롯이 필요할 수 있습니다. 그것은 당신의 아키텍처에 달려 있습니다. –

+0

기본적으로 부모 QWidget 클래스 내부에 자체 인스턴스가있는 사용자 정의 클래스 메소드에 유효성이 검사 된 데이터를 전달하는 가장 좋은 방법은 무엇입니까? – Stefano

관련 문제