2014-01-11 7 views
-1

qt-creator를 사용하여 약간의 QT 애플리케이션을 작성하고 있습니다.QDialog on accept 사용자 정의 클래스 객체

"새로운 연락처"버튼과 같은 몇 가지 컨트롤이있는 기본 창이 있습니다. 버튼을 누르면 QDialog가 표시되며 여기에는 이름, 모바일 및 이메일의 3 가지 편집 내용이 포함됩니다.

대화 상자는 신호/슬롯 시스템을 통해 표시됩니다. 그것은 잘 작동하지만 확인을 클릭하면 연락처 개체를 만들려면 주 창 코드에서 만든 QList에 넣으려면 내 주 창 해당 연락처를주고 싶습니다.

접근 방식은 다음과 같습니다 QMainWindow -> 새 연락처는 -> 확인 - -> 인 QDialog은

인 QDialog 주심> QMainWindow

내가 거기 인수 나로 인 QDialog 메인 창에서 QList를 통과해야 가장 좋은 방법인가요?

+0

1 년 후 아직 해결되지 않았습니까 ?? – lpapp

답변

0

주 창에서 QList를 인수로 QDialog로 전달해야합니까? 아니면 가장 좋은 방법이 있습니까? 제 생각에는

, 최고의 세 QLabel의 3 개 QLineEdit의와 정의 QDialog 서브 클래스 될 것입니다.

  • 라벨 1 :

    레이블 값의 다음과 같은 유형을 얻을 것이다 이름

  • 라벨 2 : 휴대폰 번호

  • 라벨 3 : 이메일

QLabels 및 QLineEdits를 사용하여 입력 내용을 표시합니다. 사용자로부터 오는 것입니다.

그러면 프로그램이 이미 수행 했으므로 "accept"이벤트 만 처리하십시오. 당신은 최종 사용자가 입력 한 텍스트를 검색하기 위해 다음과 같은 방법을 사용할 수 있습니다

text : QString

이 속성은 라인 편집의 텍스트를 보유하고 있습니다.

이 속성을 설정하면 선택 항목이 지워지고 실행 취소/다시 실행 내역이 지워지고 커서가 줄 끝으로 이동 한 다음 수정 된 속성을 false로 다시 설정합니다. 텍스트는 setText()로 삽입 할 때 유효성이 검사되지 않습니다.

텍스트가 maxLength() 길이로 잘립니다.

기본적으로이 속성에는 빈 문자열이 포함되어 있습니다.

다음, accepted signal의 핸들러에서, 당신은 같은 세 가지 접근 방법, 호출 할 수

  • QString 이름() const를 {> 텍스트를 nameLineEdit-을 반환을(); }

  • QString mobileNumber() const {return mobileNumberLineEdit-> text(); }

  • QString email() const {return emailLineEdit-> text(); }

당신은 또한 당신의 데이터 표현을 구축에 따라 전용 구조에서 그 저장할 수 있기 때문에 구조는 다음과 같이 될 것이다 :

struct Contact { 
    QString name; 
    QString mobileNumber; 
    QString email; 
}; 

을 그리고 당신은에 대한 접근을 할 것이다 그것은 다음과 같습니다.

Contact contact() const; 
+0

좋아, 나는 짧게하려고했지만 어쩌면 중요한 부분을 잊어 버렸을 것이다. 1) QDialog에서 레이블과 행을 모두 편집했습니다. 2) 버튼 수락 핸들러에서 대화 상자의 QString을 가져옵니다. 문제는 대화 상자를 여는 주 윈도우의 작업 트리거 메소드가 대화 상자가 끝나는 즉시 끝내기 때문에 3 개의 값을 주 창에 제공하는 방법입니다 가 표시됩니다. – user1638466

+0

@ user1638466 :이 값으로 수행 할 작업에 따라 다릅니다. 그것들을 멤버 변수에 저장할 수 있습니다. 대화 상자 자체를 파괴하지 않고 숨기거나 대화창의 다른 구성 요소에 할당하는 등 나중에 대화 상자 자체에서 액세스 할 수 있습니다. 너무 광범위하게 질문하고 있습니다. :) – lpapp

+0

잘 알고 있습니다 ... 사실 QT 포럼에서도 도움을 얻으 려하고 있습니다. 문제를 해결하기를 희망하며 해결책도 게시 할 예정입니다.) – user1638466

0

QDialog의 하위 클래스를 만듭니다. Yourclass :: exec()를 호출하여 대화 상자를 표시하고 (exec는 QDialog의 함수 임), 나중에 Yourclass :: contactDetails()를 사용하여 가져 오십시오. contactDetails는 작성해야하는 완벽하게 일반적인 멤버 함수입니다.