검색결과 리스트
2018/12에 해당되는 글 3건
- 2018.12.31 2018년 회고 - 개발
- 2018.12.10 circle image Label
- 2018.12.06 text + combobox = QCompleter(2)
circle 안에 이미지가 들어가는 형태를 구현하기가 생각보다 어렵고.
고정된 이미지일 경우 style sheet로 간단하게 구현이 된다.
하지만 로컬 이미지를 가지고? circle 형태의 QLabel을 만들기는 까다롭다
그래서 QLabel를 상속 받아서 다음과 같이 처리하면 쉽게? 그릴수 있다.
CircleLabel은 QLabel을 상속 받은 QWidget이다.
private:
void paintEvent(QPaintEvent *event) override;//paintEvent을 override한다
void CircleLabel::paintEvent(QPaintEvent *event)
{
QString pixmapPath = imagePath_;
if (imagePath_.isEmpty())
{
pixmapPath = ":image/defaultimage.png";
}
//draw main image
QPixmap mainPixmap(pixmapPath);
QPixmap scaled = mainPixmap.scaled(width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
QBrush brush(scaled);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
painter.setBrush(brush);
painter.setPen(QColor("red"));//pen 색을 적절히 지정해주면 antialiasing이 부족한 부분이 티가 덜 난다~
painter.drawRoundedRect(0, 0, width(), height(), 90, 90);
//만일 2개 이미지를 겹쳐서 그린 다면 다음과 같이 추가해주면 된다.- 첨부이미지 기준으로 스머프 우측 하단에 //설정 이미지와 같은.~
QPixmap settingPixmap(":image/Edit.png");
painter.drawPixmap(66, 66, settingPixmap);
QLabel::paintEvent(event);
}
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;
}
RECENT COMMENT