Qt关于如何取消窗口双击放大的问题

一个QWidget,固定大小后,如何取消它在标题栏的双击放大功能,标题栏需要保留,因为需要留下一个关闭按钮

用setFixedSize以后双击标题栏就不会放大了啊,最大化按钮也会变成灰的


    void resizeEvent(QResizeEvent *event) override {
        // 检查窗口大小是否与固定大小相同
        if (size() != QSize(400, 300)) {
            // 将窗口大小重置为固定大小
            resize(400, 300);
        }

        QWidget::resizeEvent(event);
    }

这是一种思路,既然固定大小了,那你不是这个大小你双击的时候我又把它重置到这个大小

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7455535
  • 这篇博客也不错, 你可以看下Qt之QWidget设置窗口背景图片的几种方法
  • 同时,你还可以查看手册:qt QWidget 中的内容
  • 除此之外, 这篇博客: Qt中继承QWidget之后,样式表不起作用中的 Qt中继承QWidget之后,样式表不起作用,解决办法有三个。强烈推荐方法一。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 方法一:设置属性 this->setAttribute(Qt::WA_StyledBackground, true);
    方法二:改成继承QFrame,因为QFrame自带paintEvent函数已做了实现,在使用样式表时会进行解析和绘制。
    方法三:重新实现QWidget的paintEvent函数时,使用QStylePainter绘制。

    void Widget::paintEvent(QPaintEvent *)
    {
        QStyleOption option;
        option.initFrom(this);
        QPainter painter(this);
        style()->drawPrimitive(QStyle::PE_Widget, &option, &painter, this);
    }
    

    方法四:界面上再放widget控件。

  • 您还可以看一下 曾志坤老师的Qt语言从入门到精通课程中的 自定义控件处理QWidget小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    由于参考资料中提供的代码和问题内容不太相关,我无法直接提供特定的解决方案。在Qt中取消窗口双击放大功能需要通过以下步骤完成:

    1. 创建一个新的继承自QMainWindow或QWidget的类,用作你的窗口。
    2. 在窗口类的构造函数中,在setWindowFlags()函数中设置Qt::CustomizeWindowHint和Qt::WindowTitleHint标志,以保留标题栏和关闭按钮,并禁用其他窗口特性。示例代码如下:
    MyWindow::MyWindow(QWidget *parent) : QMainWindow(parent)
    {
        setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint);
    }
    
    1. 如果你使用的是QMainWindow类,需要调用setFixedSize()函数来设置窗口的固定大小。如果你使用的是QWidget类,可以在resizeEvent()函数中设置窗口的大小。示例代码如下:
    void MyWindow::resizeEvent(QResizeEvent *event)
    {
        setFixedSize(event->size());
    }
    

    这样,你就可以创建一个没有自动放大功能的带有标题栏和关闭按钮的窗口了。请根据你实际的需求和代码框架进行修改。如果你有进一步的问题或需要更详细的解决方案,请提供更多代码和上下文信息,以便我能够给出更好的回答。