QListView의 목록 항목의 픽스맵에 그래픽 효과를 적용하고 싶습니다.QListView의 이미지에 그래픽 효과를 적용하려면 어떻게해야합니까?
어떻게해야합니까?
내가 아는 한, 내 자신의 대리인을 만들어야합니다. 하지만 QGraphicsEffect를 어떻게 사용합니까?
업데이트.
QListWidget을 사용하는 경우 다음 효과를 얻을 수 있습니다. 모든 목록 항목에 대한 위젯을 만들고 원하는 QGraphicsEffect를 적용합니다.
class PortraitViewWidget : public QFrame
{
Q_OBJECT
public:
explicit PortraitViewWidget(QWidget* parent = nullptr)
{
auto imageView = new QWidget();
auto imageViewLayout = new QVBoxLayout();
auto imageLabel = new QLabel();
auto textLabel = new QLabel();
// test defaults
imageLabel->setPixmap(QPixmap("/Lenna.png"));
imageLabel->setScaledContents(true);
static qreal quality = 0.f;
quality += 0.1752f;
if(quality > 1.f)
quality = 1.f;
textLabel->setText(QString("%1%").arg(quality * 100.f, 0, 'f', 1));
textLabel->setAlignment(Qt::AlignCenter);
textLabel->setStyleSheet(
"QLabel {"
" background-color: white;"
" color: black;"
" font-size: 16px;"
" padding: 2px; }");
imageViewLayout->addWidget(imageLabel);
imageViewLayout->addWidget(textLabel);
imageViewLayout->setMargin(0);
imageViewLayout->setSpacing(0);
imageViewLayout->setContentsMargins(0, 0, 0, 0);
imageView->setLayout(imageViewLayout);
auto effect = new QGraphicsDropShadowEffect();
effect->setBlurRadius(55);
effect->setOffset(0.f);
effect->setColor(Qt::green);
imageView->setGraphicsEffect(effect);
imageView->setSizePolicy(
QSizePolicy::Expanding,
QSizePolicy::Expanding);
imageView->setMinimumSize(240, 320);
imageView->setMaximumSize(480, 640);
auto layout = new QVBoxLayout();
layout->addWidget(imageView);
layout->setMargin(25);
setLayout(layout);
}
};
을하지만,이 경우에 나는 또한 거의 손으로 contnts을 반영하기 위해 위젯에 데이터를 업데이트 구현해야하며,이 QListView 변화와 함께, bothersome.Currently 철저하다 :이 위젯은 (예를 들어) 같이 갈 것 모델의 데이터는 간단하고 직관적이며, 사용 된 모델을 즉시 변경할 수도 있습니다.
항목의 동일한 전망을 달성하는 방법이 있습니까? 어쩌면 적용 할 수있는 대리자를 구현하는 패턴이 있습니다.
좀 더 구체적으로 말씀해 주시겠습니까? 귀하의 QListView가 무엇입니까? 보이는대로 사용자 정의 하시겠습니까? (언급 한대로 위임자에게 표시됩니다)? "효과"를 추가하려면 이미 실행중인 코드가있을 수 있으며 여기에 일부 코드를 넣으면 확실하게 문제를 이해하는 데 도움이됩니다. – Uflex