如何在我的 QMainWindow 中使用我的自定义 minimize/close window 按钮?

How to use my custom minimize/close window buttons in my QMainWindow?

我想删除 QMainWindow 的 windows 标题栏(和 minimize/maximize/close 按钮)。我想使用我自己的 minimize/close 按钮。

我知道如何删除 minimize/maximize/close window 按钮。这不是一个问题。 How to remove the window border (containing minimize, maximize and close buttons) from a Qt widget?

问题在于添加那些新按钮 (minimize/close)。是否可以在 Qt Style Sheet(或 C++)中做到这一点?

ps:我想要一些便携的 Windows/Mac/Linux

您应该创建 window 没有系统栏(没有最小化、全屏、关闭按钮,您可以使用下一个标志 Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint) 并添加您自己的自定义系统按钮。

可惜那种装修要看windows经理。您可能会找到 OS 相关解决方案(例如,this for Windows 更改标题栏的其他方面),但是如果您删除 window 按钮,那么我知道的唯一可移植选项是创建您自己的 容器 window,一个 QWidget,其中有一个 header 区域,其中包含您想要的按钮和一个 centralWiget 区域,您可以在其中添加其他人申请:

然后连接 header 个按钮

connect(m_ui.btnMinimize, SIGNAL(clicked()), SLOT(showMinimized()));
connect(m_ui.btnClose, SIGNAL(clicked()), SLOT(close()));

要使其可重复使用,只需添加一个 insert(QWidget*) 方法来替换 centralWidget

注意: 考虑到您必须创建带有 Qt::FramelessWindowHint 标志集的容器,因此如果您希望允许用户 move/resize window,您也必须手动处理这些操作。