如何在不改变其外观的情况下禁用Qt小部件

时间:2016-08-03 09:23:27

标签: qt qt4.7

我有一个Qt小部件,它有一个布局,里面有更多的小部件。当我禁用小部件时,整个小部件变得很少褪色,不再可能进行修改。我想要禁用小部件所带来的功能,但我不希望它的外观发生变化。请告诉我如何做到这一点。

我想到的几点想法:

  1. 相反禁用小部件,捕获小部件上的所有事件并且不执行任何操作
  2. 更新已禁用状态的样式表(如果可能,不确定)

1 个答案:

答案 0 :(得分:0)

1。捕获事件

使用QObject::installEventFilter()QObject::eventfilter()。 请记住Qt调度GUI事件的方式,特别是儿童首先获取事件。因此,您需要在所有小部件上递归安装事件过滤器,并观察QEvent::ChildAdded

2。使用样式表

这不是一个好的解决方案。样式表倾向于打破QStyle机制,这可能导致副作用。

3。使用QPixmap

隐藏所有子窗口小部件,将它们渲染为QPixmap并在paintEvent中绘制像素图。