我想在我的 GUI 中添加一个 QPushButton,这样按钮就在窗框外面。一个很好的比较是 CleanMyMac 中的 scan
按钮(见附图)。
我试过使主窗口透明,然后添加仅在底部透明的背景图像,使窗口看起来比实际小。然而,这会产生许多其他并发症,例如窗口框架阴影(它似乎并没有完全消失:
mainWindow->setWindowFlags(Qt::FramelessWindowHint |
Qt::NoDropShadowWindowHint)
此外,使用上述方法,窗口无法完全展开,我宁愿按钮的一小部分在显示之外(如 CleanMyMac)。
有什么建议吗?
你可以使用 QWidget::setMask
.作为示例,请考虑以下类...
class widget: public QWidget {
using super = QWidget;
public:
explicit widget (QWidget *parent = nullptr)
: super(parent)
, m_button("Just hanging here...")
{
setLayout(&m_layout);
m_layout.addWidget(&m_button, 1, 1);
m_layout.setRowStretch(0, 1);
m_layout.setColumnStretch(0, 1);
m_layout.setColumnStretch(2, 1);
}
protected:
virtual void resizeEvent (QResizeEvent *event) override
{
super::resizeEvent(event);
QRect r(rect());
r.setBottom(m_button.geometry().top());
QRegion region(r);
region |= m_button.geometry();
setMask(region);
}
private:
QGridLayout m_layout;
QPushButton m_button;
};
上面给出了类似...
虽然它目前不是很有用,但它演示了该技术。
我是一名优秀的程序员,十分优秀!