QCompleter Class
QCompleter 클래스는 항목 모델에 기반한 완성 기능을 제공합니다. 더 보기...
Header: | #include <QCompleter> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
상속합니다: | QObject |
공용 유형
enum | CompletionMode { PopupCompletion, InlineCompletion, UnfilteredPopupCompletion } |
enum | ModelSorting { UnsortedModel, CaseSensitivelySortedModel, CaseInsensitivelySortedModel } |
속성
|
|
공공 기능
QCompleter(QObject *parent = nullptr) | |
QCompleter(QAbstractItemModel *model, QObject *parent = nullptr) | |
QCompleter(const QStringList &list, QObject *parent = nullptr) | |
virtual | ~QCompleter() override |
Qt::CaseSensitivity | caseSensitivity() const |
int | completionColumn() const |
int | completionCount() const |
QCompleter::CompletionMode | completionMode() const |
QAbstractItemModel * | completionModel() const |
QString | completionPrefix() const |
int | completionRole() const |
QString | currentCompletion() const |
QModelIndex | currentIndex() const |
int | currentRow() const |
Qt::MatchFlags | filterMode() const |
int | maxVisibleItems() const |
QAbstractItemModel * | model() const |
QCompleter::ModelSorting | modelSorting() const |
virtual QString | pathFromIndex(const QModelIndex &index) const |
QAbstractItemView * | popup() const |
void | setCaseSensitivity(Qt::CaseSensitivity caseSensitivity) |
void | setCompletionColumn(int column) |
void | setCompletionMode(QCompleter::CompletionMode mode) |
void | setCompletionRole(int role) |
bool | setCurrentRow(int row) |
void | setFilterMode(Qt::MatchFlags filterMode) |
void | setMaxVisibleItems(int maxItems) |
void | setModel(QAbstractItemModel *model) |
void | setModelSorting(QCompleter::ModelSorting sorting) |
void | setPopup(QAbstractItemView *popup) |
void | setWidget(QWidget *widget) |
virtual QStringList | splitPath(const QString &path) const |
QWidget * | widget() const |
bool | wrapAround() const |
공용 슬롯
void | complete(const QRect &rect = QRect()) |
void | setCompletionPrefix(const QString &prefix) |
void | setWrapAround(bool wrap) |
신호
void | activated(const QModelIndex &index) |
void | activated(const QString &text) |
void | highlighted(const QModelIndex &index) |
void | highlighted(const QString &text) |
재구현된 보호 기능
virtual bool | event(QEvent *ev) override |
virtual bool | eventFilter(QObject *o, QEvent *e) override |
상세 설명
QCompleter를 사용하여 QLineEdit 및 QComboBox 과 같은 Qt 위젯에서 자동 완성 기능을 제공할 수 있습니다. 사용자가 단어를 입력하기 시작하면 QCompleter는 단어 목록을 기반으로 단어를 완성할 수 있는 가능한 방법을 제안합니다. 단어 목록은 QAbstractItemModel 로 제공됩니다. (단어 목록이 정적인 간단한 애플리케이션의 경우, QStringList 을 QCompleter의 생성자에 전달할 수 있습니다.)
기본 사용법
QCompleter는 일반적으로 QLineEdit 또는 QComboBox 과 함께 사용됩니다. 예를 들어, 다음은 QLineEdit 에서 간단한 단어 목록에서 자동 완성을 제공하는 방법입니다:
QStringList wordList; wordList << "alpha" << "omega" << "omicron" << "zeta"; QLineEdit *lineEdit = new QLineEdit(this); QCompleter *completer = new QCompleter(wordList, this); completer->setCaseSensitivity(Qt::CaseInsensitive); lineEdit->setCompleter(completer);
QFileSystemModel 을 사용하여 파일 이름 자동 완성을 제공할 수 있습니다. 예를 들어
QCompleter *completer = new QCompleter(this); completer->setModel(new QFileSystemModel(completer)); lineEdit->setCompleter(completer);
QCompleter가 작동할 모델을 설정하려면 setModel()를 호출합니다. 기본적으로 QCompleter는 completion prefix (즉, 사용자가 입력하기 시작한 단어)를 모델 케이스의 0열에 저장된 Qt::EditRole 데이터와 민감하게 일치시키려고 시도합니다. 이는 setCompletionRole(), setCompletionColumn() 및 setCaseSensitivity()를 사용하여 변경할 수 있습니다.
모델이 완성에 사용되는 열과 역할에 따라 정렬되는 경우 QCompleter::CaseSensitivelySortedModel 또는 QCompleter::CaseInsensitivelySortedModel 인수를 사용하여 setModelSorting()를 호출할 수 있습니다. 대규모 모델에서는 이렇게 하면 QCompleter가 선형 검색 대신 이진 검색을 사용할 수 있으므로 성능이 크게 향상될 수 있습니다. 이진 검색은 filterMode 이 Qt::MatchStartsWith 일 때만 작동합니다.
모델은 list model, table model 또는 tree model 일 수 있습니다. 트리 모델에서의 완성은 약간 더 복잡하며 아래의 Handling Tree Models 섹션에서 다루고 있습니다.
completionMode()는 사용자에게 완성을 제공하는 데 사용되는 모드를 결정합니다.
완료를 통한 반복 작업
단일 후보 문자열을 검색하려면 완성해야 하는 텍스트를 사용하여 setCompletionPrefix()를 호출하고 currentCompletion()를 호출합니다. 아래와 같이 완료 목록을 반복할 수 있습니다:
for(int i = 0; completter->setCurrentRow(i); i++) qDebug() << completer->currentCompletion() << " is match number " << i;
completionCount()는 현재 접두사에 대한 총 완료 횟수를 반환합니다. completionCount()는 전체 모델을 스캔해야 하므로 가능하면 피해야 합니다.
완성 모델
completionModel()은 현재 완성 접두사에 대해 가능한 모든 완성을 모델에 표시되는 순서대로 포함하는 목록 모델을 반환합니다. 이 모델을 사용하여 사용자 지정 보기에 현재 완료를 표시할 수 있습니다. setCompletionPrefix ()를 호출하면 완성 모델이 자동으로 새로 고쳐집니다.
트리 모델 처리하기
QCompleter는 항목의 경로를 지정하여 항목(또는 하위 항목 또는 하위 하위 항목)이 문자열로 명확하게 표현될 수 있다고 가정하여 트리 모델에서 완성을 찾을 수 있습니다. 그런 다음 완료는 한 번에 한 단계씩 수행됩니다.
사용자가 파일 시스템 경로를 입력하는 경우를 예로 들어 보겠습니다. 이 모델은 (계층적) QFileSystemModel 입니다. 경로의 모든 요소에 대해 완성이 수행됩니다. 예를 들어 현재 텍스트가 C:\Wind
인 경우 QCompleter는 현재 경로 요소를 완성하기 위해 Windows
을 제안할 수 있습니다. 마찬가지로 현재 텍스트가 C:\Windows\Sy
인 경우 QCompleter는 System
을 제안할 수 있습니다.
이러한 종류의 완성이 작동하려면 QCompleter가 경로를 각 수준에서 일치하는 문자열 목록으로 분할할 수 있어야 합니다. C:\Windows\Sy
의 경우 "C:", "Windows" 및 "Sy"로 분할해야 합니다. splitPath ()의 기본 구현은 모델이 QFileSystemModel 인 경우 QDir::separator()를 사용하여 completionPrefix 을 분할합니다.
완성을 제공하려면 QCompleter가 인덱스에서 경로를 알아야 합니다. 이는 pathFromIndex()에서 제공합니다. pathFromIndex ()의 기본 구현은 목록 모델의 경우 edit role 에 대한 데이터를 반환하고 모드가 QFileSystemModel 인 경우 절대 파일 경로를 반환합니다.
QAbstractItemModel, QLineEdit, QComboBox 및 완성자 예제를참조하세요 .
멤버 유형 문서
enum QCompleter::CompletionMode
이 열거형은 사용자에게 완료를 제공하는 방법을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QCompleter::PopupCompletion | 0 | 현재 완료가 팝업 창에 표시됩니다. |
QCompleter::InlineCompletion | 2 | 완료는 인라인으로 표시됩니다(선택한 텍스트로). |
QCompleter::UnfilteredPopupCompletion | 1 | 가능한 모든 완료가 팝업 창에 표시되며 가장 가능성이 높은 제안이 현재로 표시됩니다. |
setCompletionMode()도 참조하세요 .
enum QCompleter::ModelSorting
이 열거형은 모델의 항목이 정렬되는 방식을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QCompleter::UnsortedModel | 0 | 모델이 정렬되지 않습니다. |
QCompleter::CaseSensitivelySortedModel | 1 | 대/소문자를 구분하여 정렬됩니다. |
QCompleter::CaseInsensitivelySortedModel | 2 | 모델이 대소문자를 구분하지 않고 정렬됩니다. |
setModelSorting()도 참조하세요 .
속성 문서
caseSensitivity : Qt::CaseSensitivity
이 속성은 일치하는 항목의 대/소문자 구분을 유지합니다.
기본값은 Qt::CaseSensitive
입니다.
액세스 함수입니다:
Qt::CaseSensitivity | caseSensitivity() const |
void | setCaseSensitivity(Qt::CaseSensitivity caseSensitivity) |
completionColumn, completionRole, modelSorting, filterMode 을참조하세요 .
completionColumn : int
이 속성은 모델에서 완성을 검색하는 열을 보유합니다.
popup()가 QListView 인 경우 이 열을 표시하도록 자동으로 설정됩니다.
기본적으로 일치 열은 0입니다.
함수에 액세스합니다:
int | completionColumn() const |
void | setCompletionColumn(int column) |
completionRole 및 caseSensitivity 을참조하세요 .
completionMode : CompletionMode
사용자에게 완성본을 제공하는 방법
기본값은 QCompleter::PopupCompletion 입니다.
액세스 기능:
QCompleter::CompletionMode | completionMode() const |
void | setCompletionMode(QCompleter::CompletionMode mode) |
completionPrefix : QString
이 속성은 완성을 제공하는 데 사용되는 완성 접두사를 보유합니다.
completionModel()는 prefix 에 대해 가능한 일치 목록을 반영하도록 업데이트됩니다.
액세스 함수:
QString | completionPrefix() const |
void | setCompletionPrefix(const QString &prefix) |
completionRole : int
이 속성에는 일치하는 항목의 내용을 쿼리하는 데 사용할 항목 역할이 저장됩니다.
기본 역할은 Qt::EditRole 입니다.
액세스 함수입니다:
int | completionRole() const |
void | setCompletionRole(int role) |
completionColumn 및 caseSensitivity 을참조하세요 .
filterMode : Qt::MatchFlags
이 속성은 필터링 수행 방법을 제어합니다.
filterMode를 Qt::MatchStartsWith 으로 설정하면 입력한 문자로 시작하는 항목만 표시됩니다. Qt::MatchContains 은 입력한 문자가 포함된 항목을 표시하고 Qt::MatchEndsWith 은 입력한 문자로 끝나는 항목을 표시합니다.
filterMode를 다른 Qt::MatchFlag 로 설정하면 경고가 표시되고 아무 작업도 수행되지 않습니다. 따라서 Qt::MatchCaseSensitive
플래그는 아무런 효과가 없습니다. caseSensitivity 속성을 사용하여 대소문자 구분을 제어하세요.
기본 모드는 Qt::MatchStartsWith 입니다.
기능에 액세스합니다:
Qt::MatchFlags | filterMode() const |
void | setFilterMode(Qt::MatchFlags filterMode) |
caseSensitivity 를참조하세요 .
maxVisibleItems : int
이 속성은 항목 단위로 측정된 완성기의 화면에서 허용되는 최대 크기를 보유합니다.
기본적으로 이 속성의 값은 7입니다.
함수 액세스:
int | maxVisibleItems() const |
void | setMaxVisibleItems(int maxItems) |
modelSorting : ModelSorting
이 속성은 모델이 정렬되는 방식을 유지합니다.
기본적으로 완성을 제공하는 모델에서 항목의 순서에 대한 가정은 이루어지지 않습니다.
completionColumn() 및 completionRole()에 대한 모델의 데이터가 오름차순으로 정렬되는 경우 이 속성을 CaseSensitivelySortedModel 또는 CaseInsensitivelySortedModel 으로 설정할 수 있습니다. 대규모 모델에서는 완성자 개체가 선형 검색 알고리즘 대신 이진 검색 알고리즘을 사용할 수 있으므로 성능이 크게 향상될 수 있습니다.
모델의 정렬 순서(즉, 오름차순 또는 내림차순)는 모델의 내용을 검사하여 동적으로 결정됩니다.
참고: 완성자의 caseSensitivity 이 정렬 시 모델에서 사용하는 대소문자 구분과 다른 경우에는 위에 설명된 성능 개선이 이루어질 수 없습니다.
액세스 함수:
QCompleter::ModelSorting | modelSorting() const |
void | setModelSorting(QCompleter::ModelSorting sorting) |
setCaseSensitivity() 및 QCompleter::ModelSorting 을참조하세요 .
wrapAround : bool
이 속성은 항목을 탐색할 때 완료 줄 바꿈을 유지합니다.
기본값은 true입니다.
함수에 액세스합니다:
bool | wrapAround() const |
void | setWrapAround(bool wrap) |
멤버 함수 문서
QCompleter::QCompleter(QObject *parent = nullptr)
주어진 parent 로 컴플리터 객체를 생성합니다.
QCompleter::QCompleter(QAbstractItemModel *model, QObject *parent = nullptr)
지정된 parent 으로 지정된 model 에서 완성을 제공하는 완성자 객체를 생성합니다.
QCompleter::QCompleter(const QStringList &list, QObject *parent = nullptr)
지정된 list 을 가능한 완성 소스로 사용하는 지정된 parent 으로 QCompleter 객체를 구축합니다.
[override virtual noexcept]
QCompleter::~QCompleter()
완성 객체를 파괴합니다.
[signal]
void QCompleter::activated(const QModelIndex &index)
이 신호는 사용자가 popup()의 항목을 활성화할 때 전송됩니다. (클릭하거나 Return 키를 눌러). completionModel ()에 있는 항목은 index 입니다.
참고: 이 클래스에서는 활성화된 신호에 과부하가 걸립니다. 함수 포인터 구문을 사용하여 이 신호에 연결하려면 이 예제와 같이 함수 포인터를 얻기 위한 편리한 헬퍼를 Qt에서 제공합니다:
connect(completer, QOverload<const QModelIndex &>::of(&QCompleter::activated), [=](const QModelIndex &index){ /* ... */ });
[signal]
void QCompleter::activated(const QString &text)
이 신호는 사용자가 popup()의 항목을 활성화할 때(클릭하거나 Return 키를 눌러) 전송됩니다. 항목의 text 이 주어집니다.
참고: 이 클래스에서는 활성화된 신호가 오버로드됩니다. 함수 포인터 구문을 사용하여 이 신호에 연결하려면 이 예제와 같이 함수 포인터를 얻기 위한 편리한 도우미를 Qt에서 제공합니다:
connect(completer, QOverload<const QString &>::of(&QCompleter::activated), [=](const QString &text){ /* ... */ });
[slot]
void QCompleter::complete(const QRect &rect = QRect())
QCompleter::PopupCompletion 및 QCompletion::UnfilteredPopupCompletion 모드의 경우 이 함수를 호출하면 현재 완료된 내용을 표시하는 팝업이 표시됩니다. 기본적으로 rect 을 지정하지 않으면 widget() 하단에 팝업이 표시됩니다. rect 을 지정하면 사각형의 왼쪽 가장자리에 팝업이 표시됩니다.
QCompleter::InlineCompletion 모드의 경우 highlighted() 신호가 현재 완료와 함께 실행됩니다.
int QCompleter::completionCount() const
현재 접두사에 대한 완료 횟수를 반환합니다. 항목 수가 많은 정렬되지 않은 모델의 경우 비용이 많이 들 수 있습니다. setCurrentRow () 및 currentCompletion()를 사용하여 모든 완료를 반복합니다.
QAbstractItemModel *QCompleter::completionModel() const
완성 모델을 반환합니다. 완성 모델은 현재 완성 접두사에 대해 가능한 모든 일치 항목을 포함하는 읽기 전용 목록 모델입니다. 완성 모델은 현재 완성을 반영하도록 자동 업데이트됩니다.
참고: 이 함수의 반환 값은 순전히 일반성을 위해 QAbstractItemModel 로 정의되어 있습니다. 실제 반환되는 모델은 QAbstractProxyModel 서브클래스의 인스턴스입니다.
completionPrefix 및 model()도 참조하세요 .
QString QCompleter::currentCompletion() const
현재 완성 문자열을 반환합니다. completionPrefix 여기에는 setCurrentRow()와 함께 사용하면 모든 일치 항목을 반복하는 데 사용할 수 있습니다.
setCurrentRow() 및 currentIndex()도 참조하세요 .
QModelIndex QCompleter::currentIndex() const
completionModel()에 있는 현재 완료의 모델 인덱스를 반환합니다.
setCurrentRow(), currentCompletion() 및 model()도 참조하세요 .
int QCompleter::currentRow() const
현재 행을 반환합니다.
setCurrentRow()도 참조하세요 .
[override virtual protected]
bool QCompleter::event(QEvent *ev)
다시 구현합니다: QObject::event(QEvent *e).
[override virtual protected]
bool QCompleter::eventFilter(QObject *o, QEvent *e)
다시 구현합니다: QObject::eventFilter(QObject *watched, QEvent *event).
[signal]
void QCompleter::highlighted(const QModelIndex &index)
이 신호는 사용자가 popup()의 항목을 강조 표시할 때 전송됩니다. completionMode ()가 QCompleter::InlineCompletion 로 설정된 상태에서 complete()가 호출되는 경우에도 전송됩니다. completionModel()에 있는 항목의 index 이 주어집니다.
참고: 강조 표시된 신호는 이 클래스에서 오버로드됩니다. 함수 포인터 구문을 사용하여 이 신호에 연결하려면 이 예제와 같이 함수 포인터를 얻기 위한 편리한 헬퍼를 Qt에서 제공합니다:
connect(completer, QOverload<const QModelIndex &>::of(&QCompleter::highlighted), [=](const QModelIndex &index){ /* ... */ });
[signal]
void QCompleter::highlighted(const QString &text)
이 신호는 사용자가 popup()의 항목을 강조 표시할 때 전송됩니다. completionMode ()가 QCompleter::InlineCompletion 로 설정된 상태에서 complete()가 호출되는 경우에도 전송됩니다. 항목의 text 이 주어집니다.
참고: 강조 표시된 신호는 이 클래스에서 오버로드됩니다. 함수 포인터 구문을 사용하여 이 신호에 연결하려면 이 예제와 같이 함수 포인터를 얻기 위한 편리한 헬퍼를 Qt에서 제공합니다:
connect(completer, QOverload<const QString &>::of(&QCompleter::highlighted), [=](const QString &text){ /* ... */ });
QAbstractItemModel *QCompleter::model() const
완성 문자열을 제공하는 모델을 반환합니다.
setModel() 및 completionModel()도 참조하세요 .
[virtual]
QString QCompleter::pathFromIndex(const QModelIndex &index) const
주어진 index 의 경로를 반환합니다. 완성자 객체는 이를 사용하여 기본 모델에서 완성 텍스트를 가져옵니다.
기본 구현은 목록 모델의 경우 항목의 edit role 을 반환합니다. 모델이 QFileSystemModel 인 경우 절대 파일 경로를 반환합니다.
splitPath()도 참조하세요 .
QAbstractItemView *QCompleter::popup() const
완료를 표시하는 데 사용되는 팝업을 반환합니다.
setPopup()도 참조하세요 .
bool QCompleter::setCurrentRow(int row)
현재 행을 지정된 row 로 설정합니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
이 함수는 currentCompletion()와 함께 사용하여 가능한 모든 완료를 반복할 수 있습니다.
currentRow(), currentCompletion() 및 completionCount()도 참조하세요 .
void QCompleter::setModel(QAbstractItemModel *model)
model 에 완성을 제공하는 모델을 설정합니다. model 은 목록 모델 또는 트리 모델일 수 있습니다. 이전에 이미 설정된 모델이 QCompleter 을 부모로 가지고 있는 경우 삭제됩니다.
편의를 위해 model 가 QFileSystemModel 인 경우 QCompleter 는 Windows에서는 caseSensitivity 를 Qt::CaseInsensitive 로, 다른 플랫폼에서는 Qt::CaseSensitive 로 전환합니다.
completionModel(), modelSorting, Handling Tree Models도 참조하세요 .
void QCompleter::setPopup(QAbstractItemView *popup)
완료를 표시하는 데 사용되는 팝업을 popup 로 설정합니다. QCompleter 이 뷰의 소유권을 갖습니다.
completionMode()을 QCompleter::PopupCompletion 또는 QCompleter::UnfilteredPopupCompletion 으로 설정하면 QListView 이 자동으로 생성됩니다. 기본 팝업은 completionColumn()을 표시합니다.
보기 설정을 수정하기 전에 이 함수가 호출되었는지 확인합니다. 뷰의 속성에 따라 뷰에 모델이 설정되어 있어야 할 수 있으므로 이 함수가 필요합니다(예: 뷰에서 열을 숨기려면 뷰에 모델이 설정되어 있어야 함).
popup()도 참조하십시오 .
void QCompleter::setWidget(QWidget *widget)
완료가 제공되는 위젯을 widget 로 설정합니다. 이 함수는 QLineEdit::setCompleter()를 사용하여 QLineEdit 에 QCompleter 을 설정하거나 QComboBox::setCompleter()를 사용하여 QComboBox 에 을 설정하면 자동으로 호출됩니다. 사용자 정의 위젯에 완성을 제공할 때는 위젯을 명시적으로 설정해야 합니다.
widget(), setModel() 및 setPopup()도 참조하세요 .
[virtual]
QStringList QCompleter::splitPath(const QString &path) const
주어진 path 을 model()의 각 수준에서 일치하는 데 사용되는 문자열로 분할합니다.
splitPath()의 기본 구현은 sourceModel()이 QFileSystemModel 인 경우 QDir::separator()을 기준으로 파일 시스템 경로를 분할합니다.
목록 모델과 함께 사용하면 반환된 목록의 첫 번째 항목이 일치하는 데 사용됩니다.
pathFromIndex() 및 Handling Tree Models 을참조하세요 .
QWidget *QCompleter::widget() const
완성자 객체가 완성을 제공하는 위젯을 반환합니다.
setWidget()도 참조하세요 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.