如何知道该小部件当前正在Qt Designer中运行

时间:2010-07-27 06:22:05

标签: qt qt4 designer qwidget

如何在自定义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() 中加入什么?

1 个答案:

答案 0 :(得分:1)

来自Qt Designer manual

  

要在Qt Designer中为自定义窗口小部件提供特殊行为,请提供 initialize()函数的实现,以便为Qt Designer特定行为配置窗口小部件构造过程。在调用 createWidget()之前,这个函数将首次被调用,并且可能设置一个内部标志,以便在Qt Designer调用插件的 createWidget()功能。

这些是来自 QDesignerCustomWidgetInterface 插件界面的方法。简而言之:当Qt Designer要求您的插件创建自定义小部件的实例时,您告诉窗口小部件的行为不同。