사용자가 제공 한 색상으로 원을 그려서 수평 정렬로 선 편집 조정을하고 싶습니다.전화 슬롯에 위젯 페인팅
중고 화가 기능 슬롯에 전화,하지만
#include <QPainter>
#include "cascadeColorHighlightWidget.h"
CascadeColorHighlightWidget::CascadeColorHighlightWidget(QWidget *parent) : QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint | Qt::Widget);
setAttribute(Qt::WA_DeleteOnClose, true);
setFixedSize(187,164);
setContentsMargins(0,0,0,0);
}
void CascadeColorHighlightWidget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
QRectF contRect = contentsRect().adjusted(1, 1, -1, -1);
painter.setPen(QPen(QColor(176, 176, 176),1));
painter.setBrush(QColor(255,255,255));
painter.drawRect(contRect);
painter.setPen(QPen(QColor(51,51,51),1));
QFont font("Calibri");
font.setPixelSize(14);
painter.setFont(font);
painter.drawText(QPointF(contRect.x() + 18, contRect.y() + 28), "Color Highlight");
}
void CascadeColorHighlightWidget::focusOutEvent(QFocusEvent *event)
{
Q_UNUSED(event);
close();
}
void CascadeColorHighlightWidget::setColors(QColor color)
{
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
QRectF contRect = contentsRect().adjusted(1, 1, -1, -1);
int rectYPos = contRect.y() + 55;
painter.setPen(Qt::NoPen);
QRectF ellipseRect = QRectF(contRect.x() + 18, rectYPos, 16, 16);
painter.setPen(Qt::NoPen);
painter.setBrush(color);
painter.drawEllipse(ellipseRect);
/*After this ellipse I need to draw a line edit where user can edit anytime*/
}
작동하지 않습니다하지만 그 위젯에 타원을 그리기하지 setcolot 호출하여. paintEvent의 항목 만 작동했습니다.
화가와 할 수 있습니까, 아니면 widgetItems를 유지하고이 widget에 삽입해야합니다. 몇 가지 제안을 해주십시오.
'QImage'에 페인트해야합니다. 그리고이 이미지를'paintEvent'에 출력하십시오. –
'setColors'를 사용하여 타원을 그리는 데 사용되는 색상을 업데이트해야합니다 (색상이 클래스의 구성원이라고 가정). 그러면 결국'paintEvent'를 트리거하는'QWidget :: update() '를 호출해야합니다. 그런 다음 당신의'paintEvent' 메소드에서 최근 업데이트 된 회원 "color"를 사용하는 타원의 그림을 추가하십시오. – Scab