【问题标题】:How to know that widget is currently is running in Qt Designer如何知道小部件当前正在 Qt Designer 中运行
【发布时间】:2011-03-21 10:46:25
【问题描述】:

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

【问题讨论】:

  • 所以你的意思是,你想分析小部件以进行测试。即小部件的外观?
  • 我想让视觉设计师的外观和感觉尽可能接近用例。考虑一个文本字符串列表小部件 - 您希望在设计时在小部件中看到一些甚至无意义的字符串,以了解它在运行时的外观

标签: qt qt4 designer qwidget


【解决方案1】:

来自Qt Designer manual

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    相关资源
    最近更新 更多