• qt——窗口置灰不可操作


            在Qt中实现一个窗口(或窗口中的特定部分)置灰并不可操作,通常涉及到两个概念:禁用窗口的交互功能以及视觉上的置灰效果。下面我会介绍如何使用Qt实现这两个功能。

     1. 禁用窗口的交互功能

            如果你希望整个窗口都不可交互,可以简单地使用`QWidget`的`setEnabled(false)`方法。这将禁用窗口及其所有子控件的交互能力。例如:

    1. // 假设 this 是 QMainWindow 或其他 QWidget 的实例
    2. this->setEnabled(false);

            如果只是希望部分控件不可交互,可以对这些特定的控件调用`setEnabled(false)`。

    2. 视觉上的置灰效果

            虽然`setEnabled(false)`会自动让大多数控件看起来是灰色的,但有时你可能需要更明显的视觉效果,或者要自定义非标准控件的视觉表现。此时,可以考虑使用样式表(CSS)或者在控件上绘制半透明覆盖层来达到视觉上的置灰效果。

    #### 使用样式表(CSS)

    button->setStyleSheet("QPushButton { color: gray; background-color: lightgray; }");

    #### 绘制半透明覆盖层

            如果你希望整个窗口都有一层半透明的灰色覆盖,可以通过重写窗口的`paintEvent`方法来实现。例如,你可以创建一个自定义的窗口类并添加如下代码:

    1. void MyWindow::paintEvent(QPaintEvent* event) {
    2.     QWidget::paintEvent(event);  // 调用基类的绘图事件,绘制窗口原本的内容
    3.     QPainter painter(this);
    4.     QColor overlayColor(50, 50, 50, 128);  // 半透明的灰色
    5.     painter.fillRect(this->rect(), overlayColor);  // 绘制覆盖整个窗口的矩形
    6. }

            这段代码将在窗口的内容上绘制一个半透明的灰色矩形,从而给用户一种窗口被禁用的视觉印象。

  • 相关阅读:
    2021 RoboCom 世界机器人开发者大赛-本科组(决赛)
    LabVIEW无法与GPIB仪器通信
    k8s配置资源管理
    第二十三章 CSP Session 管理 - 身份验证共享策略
    【C++】哈希算法
    【笑小枫的SpringBoot系列】【十一】SpringBoot接口日志信息统一记录
    C语言学生成绩管理系统(二叉排序树)
    PostgreSQL 流复制搭建与维护
    C++17 --- 多态性、虚函数、多态的条件、联编(捆绑,绑定)
    华清远见-html-js-jquery学习总结
  • 原文地址:https://blog.csdn.net/qq_43287763/article/details/138170922