zoukankan      html  css  js  c++  java
  • 【Qt开发】QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent

    建了一个对话框,我不想把边框去掉,只想去掉关闭按钮,
    setWindowFlags(windowFlags()&~Qt::WindowCloseButtonHint&~Qt::WindowContextHelpButtonHint);
    结果那个问号的按钮去掉了,但是关闭按钮还在,求助啊

    setWindowFlags(Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);
    这样就行了,哈哈!
     

    setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);
    还是简单点好!


    QDialog类下有一个虚函数

    void QDialog::closeEvent (  QCloseEvent   *  e   )  [virtual protected]

    通过实现closeEvent函数,就可以以对关闭窗口消息进行拦截,比如程序还没有完成工作时,可以弹出警告窗口,即使用户确认退出操作

     

    在头文件中,需要加入#include <QCloseEvent>:

     

    #ifndef TEST_H
    #define TEST_H

    #include <QDialog>
    #include <QCloseEvent>

    class ClientTest : public QDialog
    {
        Q_OBJECT

    public:
        ClientTest();
        void closeEvent(QCloseEvent *event);
     //后边的具体实现省略
    ...

    };
    #endif

     

    在cpp文件中,对closeEvent函数进行实现:

     

    void ClientTest::closeEvent(QCloseEvent *event)
    {
        QMessageBox::StandardButton button;
        button = QMessageBox::question(this, tr("退出程序"),
            QString(tr("警告:程序有一个任务正在运行中,是否结束操作退出?")),
            QMessageBox::Yes | QMessageBox::No);

        if (button == QMessageBox::No) {
            event->ignore();  //忽略退出信号,程序继续运行
        }
        else if (button == QMessageBox::Yes) {
            event->accept();  //接受退出信号,程序退出
        }
    }

  • 相关阅读:
    Hadoop学习入门
    node.js学习一——什么是node.js
    判断投递失败原因方法
    MySQL慢查询(一)
    jmeter5.1.1 打印OOM的问题
    Jmeter ForEach Controler、IF Controller、switch Controller
    Jmeter5.1.1 NON GUI下线程数可传参
    在JMeter压测 控制交易占比
    Linux下安装配置Jmeter5.1, 并执行jmx文件
    jmeter 生成报告 --- 如果已经生成jtl文件,可运行如下命令:jmeter -g test.jtl -o ./output
  • 原文地址:https://www.cnblogs.com/huty/p/8518008.html
Copyright © 2011-2022 走看看