gpt4 book ai didi

c++ - 如何创建一个三角形的QWidget?

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:22 26 4
gpt4 key购买 nike

如何创建三角形的QWidget

它需要是一个QWidget,因为它将被包含在另一个小部件中,必须是可点击的并且会执行一些动画(但第一次我只需要创建三角形)。

像这样:

enter image description here

我正在使用 Qt 5.3

最佳答案

举个例子。希望对您有所帮助。

小部件.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPainterPath>
#include <QPoint>
#include <QVector>

class Widget : public QWidget
{
Q_OBJECT

public:
Widget(QWidget *parent = 0);
~Widget();

protected:
void paintEvent(QPaintEvent *event) override;

private:
QPainterPath getPath() const;
QRegion getRegion() const;

private:
int width = 100;
int height = 100;
QVector<QPoint> points;
};

#endif // WIDGET_H

小部件.cpp:

#include "widget.h"
#include <QPainter>
#include <QPoint>
#include <QPainterPath>
#include <QBrush>
#include <QPolygon>
#include <QVector>

Widget::Widget(QWidget *parent)
: QWidget(parent),
points(3)
{
points[0] = QPoint(20, 20);
points[1] = QPoint(80, 20);
points[2] = QPoint(50, 80);

setFixedSize(width, height);
setMask(getRegion());
}

Widget::~Widget()
{

}

QPainterPath Widget::getPath() const
{
QPainterPath path;
path.moveTo(points[0]);
path.lineTo(points[1]);
path.lineTo(points[2]);
path.lineTo(points[0]);

return path;
}

QRegion Widget::getRegion() const
{
return QRegion(QPolygon(points));
}

void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);

QPainterPath path = getPath();

QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.fillPath(path, QBrush(Qt::black));
}

关于c++ - 如何创建一个三角形的QWidget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48100574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com