【问题标题】:Initial z-Index for WindowsWindows 的初始 z-Index
【发布时间】:2016-12-13 10:44:18
【问题描述】:

当我在 qooxdoo 中创建一个新的模态窗口时,它的 z-index 为 100000。 第二个窗口将获得 100002 的 z-index。等等。

如何将初始值设置为 1000 ?

【问题讨论】:

    标签: qooxdoo


    【解决方案1】:

    自动 zIndex 分配由 qx.ui.window.Manager 实例完成。见http://www.qooxdoo.org/5.0.1/pages/desktop/window_management.html

    qx.ui.window.Manager 有一个私有成员 _minZIndex,它的初始值为 10000。为了改变它,你必须从 qx.ui.window.Manager 派生你自己的窗口管理器类,并在重写的构造函数中更改该值,像这样:

    qx.Class.define("qx.ui.window.MyManager",
    {
      extend : qx.ui.window.Manager,
    
      construct : function() {
        this.base(arguments);
        this._minZIndex = 1000;
      }
    }); 
    

    (请根据您的需要更改类路径qx.ui.window.MyManager)。

    在创建第一个窗口之前,您可以使用以下代码替换应用程序的窗口管理器。一个好地方是在您的应用程序中 qx.application.Standalone 的覆盖 main 方法的开头 (见:http://www.qooxdoo.org/devel/api/#qx.application.AbstractGui~main):

    var oldWindowManager = this.getRoot().getWindowManager();
    var desktop = oldWindowManager.getDesktop();
    var windowManager = new qx.ui.window.MyManager();
    windowManager.setDesktop(desktop);
    this.getRoot().setWindowManager(windowManager);
    qx.ui.core.queue.Widget.remove(oldWindowManager);
    oldWindowManager.dispose();
    

    【讨论】:

    • 这正是我所需要的。不幸的是函数 this.getRoot().setWindowManager(windowManager);卡住。 Firebug 报告:TypeError: obj is null var clazz = obj.constructor;跟界面有关系吗?
    • 我已经用 Firefox 测试了代码,没有任何问题。您是否在其自己的文件<approot>/myapp/source/class/ui/window/Manager.js 中创建了派生窗口管理器类,并在qx.Class.define 中创建了相应的命名空间,例如maypp.ui.window.Manager?您是运行./generate.py source 来测试源版本还是运行./generate.py build 来测试构建版本?
    • @Raymond 你解决问题了吗?请回来报告。谢谢。
    【解决方案2】:

    窗口是一个 qx.ui.core.Widget。它继承了 zIndex 属性。所以使用 setZIndex http://www.qooxdoo.org/current/apiviewer/#qx.ui.core.Widget~setZIndex

    【讨论】:

    • 这无济于事,因为窗口管理器会动态分配 zIndex,具体取决于窗口在其形态上的堆叠方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2012-07-27
    • 2012-01-11
    相关资源
    最近更新 更多