建了一个对话框,我不想把边框去掉,只想去掉关闭按钮, setWindowFlags(windowFlags()&~Qt::WindowCloseButtonHint&~Qt::WindowContextHelpButtonHint); 结果那个问号的按钮去掉了,但是关闭按钮还在,求助啊
setWindowFlags(Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint); 这样就行了,哈哈!
setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint); 还是简单点好!
QDialog类下有一个虚函数
通过实现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(); //接受退出信号,程序退出 } }