2012-08-27 5 views
0

Qt를 다시 사용하기 시작했습니다. 우리가 원하는 것은 그래픽 사용자 인터페이스를 자동으로 생성하는 것입니다. 따라서 .ui 파일 형식 (XML 기반 파일 형식)을 자세히 살펴 보았습니다. 이 파일들은 Qt Designer에 의해 생성되지만 다른 소프트웨어에 의해 쉽게 생성 될 수 있습니다. 이 부분은 지금까지 작동합니다.사용자 정의 항목이있는 Qt 사용자 정의 위젯 - Qt Designer/uy

하지만 맞춤 위젯을 추가하고 싶습니다. 맞춤 위젯을 만드는 것도 그리 어렵지 않습니다. 어떤 좋은 웹 사이트도 존재합니다 : Creating Custom Widgets for Qt Designer, Using Custom Widgets with Qt Designer, 더 많은 하이퍼 링크가 포함되어 있습니다. ...

내 질문은 오히려 : 어떻게 사용자 정의 항목을 표시하는 사용자 정의 위젯을 구현할 수 있습니까? 한 가지 예를 들어 봅시다. 우리는 QComboBox와 QSpinBox를 가지고 있습니다. 콤보 세 항목

  • B
  • C.을 갖는다

"A"는 I '가 최소값 1로 설정 spinbox 원하는 선택 9 maxiumum 세트; "B"를 선택할 때 스핀 박스의 최소값은 10으로 설정되고 최대 값은 99로 설정되어야합니다. "C"를 선택하면 스핀 상자의 최소값을 100으로 설정하고 최대 값을 999로 설정해야합니다. 어떻게 올바르게 수행됩니까?

나는 지금 나를 위해 도우미 클래스 인 QTableWidget에 데이터를 설정했다. 각 행은 세 개의 열/셀이 있습니다

item | min | max 
-----+------+----- 
    A | 0 | 9 
    B | 10 | 99 
    C | 100 | 999 

을 그리고 나는 QComboBox와 QSpinBox이 포함되어 내 사용자 정의 위젯을 가지고있다. 런타임에는 QTableWidget에서 데이터/모델을 가져 와서 setFriendContainer()라는 메소드로 복사하는 커스텀 위젯에게 [자동으로 출력되는 tablewidget의 신호에 연결되어야하는 공용 슬롯조차도]. 그 후에 테이블 위젯은 더 이상 필요하지 않습니다! 나는 그것을 사용자에게 전혀 보여주고 싶지 않습니다 (이것이 왜 일부 크기 속성이 0으로 설정되었지만 부분적으로는 볼 수 있습니다).

저는 이것이 실제로 구현하기에 이상적인 방법이라고 생각합니다. 무엇이 더 좋을까요/대안일까요? 항목도 생성되며 동일한 .ui 파일에 포함되어야합니다. 물론 런타임에 다른 파일에서로드 할 수도 있지만 이것이 아닌 옵션이라고 생각합니다. 내 해결 방법이 괜찮다고 생각하니, 아니면 너무 못생긴다고 생각하십니까? 단일 사용자 정의 속성을 추가하는 방법을 볼 수있는 몇 가지 예제가 있지만 전체 컨테이너 (항목 또는 테이블의 목록)를 추가하려는 경우 이것이 다른 것이라고 생각합니다. 그러나 .ui 파일에 포함 시키면 전체 모델/뷰 개념에 위배 될 수 있습니다.

도움을 환영합니다!

덕분에, 마티아스

답변

1

XML 형식의 사용자 지정 속성에 데이터를 추가했습니다. 데이터는 위젯에 사용 된 코딩 정보를 저장합니다. 동적 인 properties을 사용하는 것이 좋습니다.

0

는 위젯의 특성을 다루고있는 것을 기억하십시오. UI 파일은 위젯, 해당 속성 및 계층 구조에서 서로에 대한 관계에 대한 설명 일뿐입니다. 커스텀 위젯은 QPushButton이나 QComboBox to Designer와 다를 바 없습니다. 중요한 점은 사용자 정의 위젯의 속성을 UI 파일에서 이해할 수있는 방식으로 인코딩하는 것입니다.

아마도 UI schema을보고 위젯이 유효한 파일에 설명되어 있는지 확인하는 것이 가장 좋습니다. 그런 다음 속성이 올바르게 작동하는지 (즉, 속성을 임의의 순서로 설정하고 동일한 결과를 얻을 수 있음) 확인하는 것입니다. 위젯을 구현하는 방법은 실제로 당신에게 달렸습니다. (자신의 데이터 구조를 만들고 "보이지 않는"트리 위젯을 드래그하지 마십시오).

관련 문제