2011-06-13 3 views
3

내가 작업하는 응용 프로그램 GUI에는 사용자가 항목을 선택하는 데 필요한 콤보 상자가 필요합니다. 응용 프로그램이 시작되면 콤보 상자에는 콤보 상자의 첫 번째 항목을 표시하는 대신 "선택하십시오"와 같은 힌트 텍스트가 표시됩니다. 힌트 텍스트를 설정하는 방법을 찾을 수 없습니다 http://doc.qt.io/qt-5/qcombobox.html#currentText-prop.QComboBox - 콤보 상자에 힌트 텍스트를 설정하는 방법

감사합니다.

+1

Qt가 콤보 배너에서 큐 배너를 지원하는지 잘 모르겠습니다. 그러나 기본 Windows 컨트롤은 않습니다. ['CB_SETCUEBANNER' 메시지 보내기 (http://msdn.microsoft.com/en-us/library/bb775897.aspx). 기본이 아닌 위젯을 사용하는 데는 비용이 듭니다. –

+1

답변 해 주셔서 감사합니다. 불행히도 내 응용 프로그램은 Linux OS에서 실행됩니다. – fucai1116

답변

1

QComboBox에 자리 표시 자 텍스트를 설정할 방법이 없습니다. 하지만이 문제를 해결할 수 있습니다. 텍스트를 설정하려면 setEditText(const QString&) 슬롯을 사용하십시오. 사용자가 comboBox에서 항목을 선택하면 항목의 텍스트가 설정됩니다. 그러나 사용자가 텍스트를 선택하고 삭제 한 다음 다른 컨트롤 요소를 선택하면 (콤보 상자가 포커스를 잃음) 텍스트가 더 이상 존재하지 않게됩니다. QComboBox을 상속 받아 해결할 수 있으며 focusOutEvent(...)을 다시 구현하면 if (currentIndex() == -1) setEditText(tr("Please select"));을 확인할 수 있습니다. 그리고 먼저 QComboBox::focusOutEvent(...)에 전화하는 것을 잊지 마십시오. 그들 QLineEdit의가없는되지 editable된다

myQComboBox->lineEdit()->setPlaceHolderText("Please select"); 

QComboBox ES, 그래서 이것은 그들에 작동하지 않을 것입니다 :

+1

Pie_Jesu에게 감사드립니다. Pie_Jesu에 대한 아이디어를 조금 업데이트했습니다. 큐 배너 텍스트를 포함하는 항목을 큐브 배너 텍스트를 설정하는 함수의 첫 번째 콤보 상자 색인에 추가합니다. 포커스 아웃 이벤트에서 콤보 상자의 첫 번째 항목을 제거합니다. 그것은 효과가있다! – fucai1116

4

거기 QComboBoxeditable 경우 an elegant solution입니다.

+0

짝수 라인 편집시 자리 표시자가없는 경우이 질문은 오래 전에 요청되었습니다. –

+0

@nwp 귀하의 제안을 사용하여 콤보 상자가 드롭 다운 기능을 수행하는 것을 차단합니다. 그것을 고치는 방법? –

+0

@XavierGeoffrey 그렇게해서는 안되며 나를 위해서하지 않아야합니다. 어쩌면 초기화 과정에서 한 번만 클릭하는 대신 클릭 이벤트에서 매번 코드를 실행 했습니까? – nwp

관련 문제