2013-04-01 3 views
0

콤보 상자 팝업 메뉴에서 프로그램 목록 및 해당 아이콘을 표시해야하는 응용 프로그램을 작성 중입니다.아이콘이 오른쪽에 표시되는 콤보 상자 항목에 아이콘 추가

다음과 같은 시도를했습니다. a. QCombobox에서 파생 된 사용자 정의 위젯을 생성했습니다. b. 다음과 같이 showPopup() 함수를 구현했습니다.

void CMyComboBox::showPopup() 
{ 
    QComboBox::showPopup(); 
    mp_Popup = this->findChild<QFrame *>(); 
    mp_Popup->move(mp_Popup->x(), mp_Popup->y() - this->height() - mp_Popup->height()); 
} 

c. 콤보 박스에 항목 추가 QString Name = "XYZ"; QIcon 아이콘 ("Sample.png");

myComboBox->insertItem(0, icon, Name); 

질문은 방법 I은 위에서 사용 넣으면, 그 좌측에있는 아이콘을 삽입 (명칭 하였다 .. 즉, 아이콘). 는 어떻게 아이콘 오른쪽에 와서

감사 Santhosh는

답변

0

QComboBox 데이터를 표시하기위한 QAbstractModel를 사용합니다 (즉 .. 이름이 아이콘 다음에) 어떻게해야합니까. 함수 void QComboBox::setModel (QAbstractItemModel * model)을 사용하여 표준 모델을 사용자 정의 모델로 바꿀 수 있습니다.

텍스트와 관련된 아이콘 위치는 스타일 옵션을 통해 제어됩니다. 다음과 같이해야합니다.

QStyleOptionViewItem option; 
option.decorationAlignment = Qt::AlignRight | Qt::AlignVCenter; 
option.decorationPosition = QStyleOptionViewItem::Top; 
+0

응답 해 주셔서 감사합니다. – user2111197

+0

답변 해 주셔서 감사합니다. QAbstractItemModel에는 "QAbstractTableView"및 "QAbstractListView"라는 2 개의 변형이 있습니다. 어느 것을 사용 하시겠습니까? 우리의 커스텀 모델에 QStyleOptionViewItem을 적용하는 방법. 예를 들어 게시하십시오. "QAbstractListView"를 사용하고 data()에 QPixmap (DecorationRole의 경우) 및 QString (DisplayRole의 경우)을 반환하는 코드를 추가했습니다. 아이콘은 여전히 ​​오른쪽에 오지 않습니다. 우리 모델에 QStyleOptionViewItem을 적용하는 방법 – user2111197

+0

죄송합니다. 모델의 코드와 뷰의 코드가 섞여 있습니다. 내 대답의 마지막 부분에있는 모든 코드는 뷰에 작성되어야하므로 setModel을 통해이 동작을 'QComboBox'로 설정할 수 없습니다. 죄송합니다. – Amartel

관련 문제