2011-10-03 4 views
11

일반 QComboBox에 항목이 채워진 경우 currentIndex-1으로 설정하면 위젯이 비어 있습니다. 드롭 다운 목록에 표시되지 않는 초기 설명 텍스트를 콤보 상자에 표시하는 것이 좋습니다 (예 : "- 국가 선택 -", "- 주제 선택"등).QComboBox에서 선택할 수없는 기본 텍스트를 설정하는 방법은 무엇입니까?

문서에서 아무 것도 찾을 수 없으며 이전 질문과 대답이 없습니다.

답변

21

콤보 상자 API에서 예상 된 것으로 보이지 않습니다. 그러나 기본 모델의 유연성 당신이 첫 번째 "합법적"항목으로 당신의 --select Country--을 추가 한 다음 사용자가 선택할 수있는에서 계속 할 수 있어야한다 보인다에 따라

QStandardItemModel* model = 
     qobject_cast<QStandardItemModel*>(comboBox->model()); 
QModelIndex firstIndex = model->index(0, comboBox->modelColumn(), 
     comboBox->rootModelIndex()); 
QStandardItem* firstItem = model->itemFromIndex(firstIndex); 
firstItem->setSelectable(false); 

무엇 정확한 동작을 원한다면 대신 setEnabled을 사용하는 것이 좋습니다. 그것이 내가 그것을 다시 설정할 수 있습니다 만 다른 색 항목 인 경우 아니면 내가 개인적으로 선호하는 것 :

Qt, How do I change the text color of one item of a QComboBox? (C++)

(I가 갇혀 얻을 무언가를 클릭 할 때 나는 그것을 좋아하지 않아 아무 것도 선택하지 않은 상태에서도 내가 어디 있었는지 되돌릴 수없는 곳)

+0

우수! Qt의 일부는 분명히 만져 보았습니다. 사용자 지정에 매우 유용합니다. 연결된 SO 질문에서 배경색을 변경하면 원래 모양보다 훨씬 멋지게 보이게됩니다. firstItem-> setData (Qt :: lightGray, Qt :: BackgroundRole); (당신이 당신의 대답에 이것을 추가한다면 나는 상관하지 않을 것입니다.) – swalog

+0

@EXIT_FAILURE 당신의 의견이 당신의 대안을 다루고 있다고 생각합니다. 나는 그것을 시도하지 않았기 때문에 내가 그것을 원한다면 나는 모른다. :) 그렇습니다. Qt는 독창성을 제공합니다. 만약 우리 모두가 어쩌면 GTK와 wxWidgets를 멈출 수 있습니다! : -/http://stackoverflow.com/questions/7545804/modeless-parentless-wxdialog-still-always-above-wxframe-window-in-z-order/ – HostileFork

관련 문제