1

我如何在自定义 Qt 小部件的代码中知道它当前在 Qt 设计器中实例化?

用例:

我构建了一个复杂的自定义小部件,它有几个子小部件,如 QPushButton、QLabel 等。

根据应用程序逻辑的要求,当创建小部件时,大多数子组件是不可见的,但在设计时,当我将它放在我希望看到的表单上时。

能够在设计时使用样式表。目前我得到的是一个空的只是构造函数的结果 - 最小视图(在我的情况下实际上是空的)。

我正在寻找的是能够做类似的事情

MyQWidget::(QWidget *parent)
{
 ....
   if(isRunningInDesigner())
   {
      myChildWidget1->setVisible(true);
      myChildWidget2->setVisible(true);
      myChildWidget3->setVisible(true);
   }
   else
   {
      myChildWidget1->setVisible(false);
      myChildWidget2->setVisible(false);
      myChildWidget3->setVisible(false);
   }
....
}

那么我应该在这个bool isRunningInDesigner()中添加什么?

4

1 回答 1

2

Qt Designer 手册

要在 Qt Designer 中为自定义小部件提供特殊行为,请提供initialize()函数的实现,以针对 Qt Designer 特定行为配置小部件构造过程。此函数将在任何调用createWidget()之前第一次调用,并且可能会设置一个内部标志,稍后当 Qt Designer 调用插件的createWidget()函数时可以对其进行测试。

这些是来自QDesignerCustomWidgetInterface插件接口的方法。简而言之:当 Qt Designer 要求您的插件创建自定义小部件的实例时,您告诉小部件以不同的方式表现。

于 2010-07-28T02:07:59.730 回答