검색결과 리스트
qcompleter에 해당되는 글 2건
- 2018.12.06 text + combobox = QCompleter(2)
- 2018.02.22 text + combobox = QCompleter
Completer가 보이는 UI를 custom할 수 있다.
그래서 준비한 2탄
treeview도 가능하고
table view도 가능하다.
QStringListModel *dateModel = new QStringListModel(stringList);
#1 completer를 표시할 UI를 생성한다. 예제는 tableview
QTableView* tableView = new QTableView(dateModel);
patientViewModel->setParent(tableView);
tableView->horizontalHeader()->setVisible(false);
tableView->setShowGrid(false);
dateCompleter->setPopup(tableView);//
그리고 itemdelegate를 set해서 tableview를 더 풍성하게 보이고 싶다면...
#2 itemDelegate를 생성한다.
이 생성한 itemdelegate를 tableview에 넣어도 반영되지 않는다. 다음과 같이 completer의 popup에 바로 set해줘야 한다.!!!
dateCompleter->popup()->setItemDelegate(itemDelegate);
#3 model을 생성해서 임의로 만들고 싶다면?
QStandardItemModel *completerModel = new QStandardItemModel();
index = 0;
for (const auto& curRecord : records)
{
QString name = list[index].name;
QString genderString = list[index].gender
QString birth = list[index].birth;
completerModel->setItem(index, 0, new QStandardItem(name));
completerModel->setItem(index, 1, new QStandardItem(genderString));
completerModel->setItem(index, 2, new QStandardItem(birth));
index++;
}
return completerModel;
}
다음과 같은 요구사항이 있을 경우 상당히 구현하기 까다롭다
requirement :
YYYY MM DD 로 제한없는 입력보다는 제한된 리스트를 제공하여 콤보박스 형태로 보여줌
단, 직접 입력도 가능하도록 처리
년: 1900~2018 까지 제공
월: 01~12 까지 제공
일: 01~31 까지 제공
이 때 쓸만한 것이 QCompleter
example
QLineEdit으로 text 입력을 받고 여기에 QCompleter를 붙이는 형태이다.
이 때 중요한 것은 model을 설정하는 것.
1. 파일에서 모델을 읽어오기도 하고
> 예제 completer->setModel(modelFromFile(":/resources/wordlist.txt")) :: (링크)
2. sql model을 설정하고 특정 컬럼의 데이터만 대상만 보이게 할수도 있다.
> 예제
QSqlQueryModel sample;
completer->setModel(sqmple);
completer->setCompletionColumn(specific column name);
completer->setCompletionMode(QCompleter::PopupCompletion);
3. 하기와 같이 간단하게 string model을 만들수도 있다.
QStringList stringList;
for (int i = 1; i <= selecteddate.daysInMonth(); i++)
{
stringList << QString().sprintf("%02d", i);
}
QStringListModel *dateModel = new QStringListModel(stringList);
QCompleter* dateCompleter = new QCompleter;
dateCompleter->setModel(dateModel);
dateEdit->setCompleter(dateCompleter); //dateEdit은 QLineEdit
RECENT COMMENT