gpt4 book ai didi

c++ - Qt::FramelessWindowHint setSizeConstraint 对关闭事件的副作用

转载 作者:行者123 更新时间:2023-11-30 05:44:50 25 4
gpt4 key购买 nike

当使用带有 setSizeConstraint 的 Qt::FramelessWindowHint 时,我的小部件不再接收关闭事件,这是一个错误吗?最小测试示例:

QT       += core gui
TARGET = QT-BUG
TEMPLATE = app
SOURCES += main.cpp\
widget.cpp
HEADERS += widget.h

小部件.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget(){}
};

#endif // WIDGET_H

小部件.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QCloseEvent>

Widget::Widget(QWidget *parent) : QWidget(parent)
{
setWindowFlags(Qt::Tool
| Qt::FramelessWindowHint
| Qt::WindowStaysOnTopHint);
QVBoxLayout *l2 = new QVBoxLayout(this);
l2->setSizeConstraint(QLayout::SetFixedSize);
this->setLayout(l2);

QLineEdit* _inputLine = new QLineEdit(this);
l2->addWidget(_inputLine);
}

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();

return a.exec();
}

最佳答案

像关闭和最小化这样的窗口事件实际上与按钮的存在有关。 Qt 人员的设计选择有点糟糕。

Qt::FramelessWindowHint 似乎删除/禁用了按钮,但您可以通过其他窗口提示重新启用它们(不显示它们)。对于关闭事件,添加 Qt::WindowCloseButtonHint

关于c++ - Qt::FramelessWindowHint setSizeConstraint 对关闭事件的副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29595658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com