Qt隐藏最小化、最大化和关闭按钮

Posted

技术标签:

【中文标题】Qt隐藏最小化、最大化和关闭按钮【英文标题】:Qt hide minimize, maximize and close buttons 【发布时间】:2011-03-13 18:44:55 【问题描述】:

你知道如何在 Qt 中隐藏标题栏的最小化、最大化和关闭按钮吗?我特别需要在 QMainWindow 上隐藏它。

【问题讨论】:

您能说说为什么需要这样做吗? 我不希望用户通过按角上的 x 来关闭我的应用程序。我希望他在退出操作之前做一些处理。 【参考方案1】:

对于关闭按钮,可以重写QmainWindow的closeEvent()

class MainWindow(QMainWindow):    
    def closeEvent(self, event):
        event.ignore()
        return

【讨论】:

【参考方案2】:

标志:Qt.Dialog | Qt.WindowCancelButtonHint | Qt.WindowCloseButtonHint

这也适用于窗口项

标志:Qt.Window | Qt.WindowTitleHint

【讨论】:

基于这些名称,我认为这些不是正确的标志...这就是 OP 无法找到它的原因吗?【参考方案3】:

如果您使用的是 Qt qml,那么要删除最小化、最大化和关闭按钮,请在 main.qml 文件的窗口函数中设置无框窗口标志,如下所示:

flags: Qt.FramelessWindowHint

【讨论】:

【参考方案4】:

看看Window Flags Example 是如何工作的!

【讨论】:

谢谢你。实际上我的主要问题是在 mainWindow 上隐藏关闭按钮。【参考方案5】:

这可以通过在 MainWindow 的 QEvent::Close 事件上使用 eventFilter 来实现

bool MainWindow::eventFilter(QObject *obj, QEvent *event) 

    if (event->type() == QEvent::Close) 
        event->ignore();
        doWhateverYouNeedToDoBeforeClosingTheApplication();
        return true;
    
    return QMainWindow::eventFilter(obj, event);


void MainWindow::doWhateverYouNeedToDoBeforeClosingTheApplication() 
    // Do here what ever you need to do
    // ...
    // ...

    // and finally quit
    qApp->quit();

【讨论】:

【参考方案6】:

设置此窗口标志Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint

请注意,在某些平台上它的行为方式不同。例如,在 Mac OS X 上,它会禁用(而不是隐藏)关闭/最小化/最大化按钮

【讨论】:

以上是关于Qt隐藏最小化、最大化和关闭按钮的主要内容,如果未能解决你的问题,请参考以下文章

QT 设置QDialog显示与隐藏系统按钮(最大小化等)

QT 设置QDialog显示与隐藏系统按钮(最大小化等)

QT界面如何加最小化、最大化按钮?

求助QT窗口最大,最小,关闭按钮问题

qt界面怎么去掉窗口关闭的按钮

Unity实战篇 |Unity 打包exe 实现隐藏窗口标题栏隐藏最小化最大化关闭按钮