C++ 如何在Qt5.5中创建具有自定义(三角形)形状的QPushButton?

C++ 如何在Qt5.5中创建具有自定义(三角形)形状的QPushButton?,c++,qt,user-interface,shape,qpushbutton,C++,Qt,User Interface,Shape,Qpushbutton,如何在Qt中创建三角形按钮?最简单的执行方法是什么?我使用设计器来创建按钮,而不是代码 另外,我在某个地方读到,只要按钮的框架仍然是矩形的,形状可能会改变,但我希望框架也能根据形状进行调整。我怎样才能做到这一点 更多细节:我想把很多小三角形按钮放在旁边,每个三角形翻转一次。每个三角形按钮都有自己的功能等(不接受重叠边框)。有谁能给我一个描述性的解释一下我该怎么做 QWidget上的几何体始终是矩形 有可能创建一个QPushButton衍生物,覆盖它的paintevent,并考虑到它的邻里关系等进

如何在Qt中创建三角形按钮?最简单的执行方法是什么?我使用设计器来创建按钮,而不是代码

另外,我在某个地方读到,只要按钮的框架仍然是矩形的,形状可能会改变,但我希望框架也能根据形状进行调整。我怎样才能做到这一点

更多细节:我想把很多小三角形按钮放在旁边,每个三角形翻转一次。每个三角形按钮都有自己的功能等(不接受重叠边框)。有谁能给我一个描述性的解释一下我该怎么做


QWidget上的几何体始终是矩形

有可能创建一个QPushButton衍生物,覆盖它的paintevent,并考虑到它的邻里关系等进行一些令人讨厌的绘制。但这将是一个真正的痛苦

使用QGraphicsView、QGraphicscene和添加适当的QGraphicsSitem(可能是QGraphicsPolygonItem?)更容易,添加它们并使用它们的信号/插槽,或者创建一个用于您的目的的派生类


覆盖mouseevents来识别点击并不难,你甚至可以使用QStyleSheets让“按钮”看起来像被按下一样

您是否确实需要
QPushButton
?你可以使用,并重新实现使它成为一个三角形。小部件的几何图形是一个矩形,但实际上它只是一个边界矩形。您可以定义所需的任何可见几何图形以及任何事件敏感几何图形。一个矩形小部件可以让事件通过透明部分落下。唯一的“问题”是布局,这类小部件需要固定位置或自定义布局。但如果我使用QGraphicsite,每个小三角形都需要一个边框,对吗?显然,矩形会穿过相邻的三角形。我希望每个小三角形都有单独的功能。有没有办法绕过boundingrect?@Outsmash:BoundingRectangle只是一个返回QGraphicsPolygonItem范围的方法,它并不意味着整个BoundingRectangle就是您的按钮区域。您有mousepressevent、mousereleaseevent和mousemoveevent,对于这些,还有一个名为“contains(QPoint)”的方法,以查看鼠标位置是否在三角形内。谢谢!我设法创造了它。我重写了shape函数以匹配创建的多边形。我从QGraphicsItem创建了一个子类,并使用这个子类创建了三个三角形。类定义有一个mousepressedevent,它有“update();”。我有几个按钮(在graphicsview之外),可以将QColor变量更改为各自的颜色,子类中的paint函数有一个笔刷变量,可以根据QColor变量更改其颜色。当我在应用程序中单击一个三角形时,所有三角形都会改变颜色。如何分离功能?无论是否单击,paintevent始终运行,因为这并不重要。绘画事件描绘了一切。因此,如果更改所有三角形的paintevent中使用的变量,当然所有三角形都将更改后的变量作为颜色。相反,您可以将颜色保存到特定三角形实例的成员。