首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TornadoFX如何创建带有子窗口模型列表的MDI?

TornadoFX是一个基于Kotlin的JavaFX框架,用于快速构建富客户端应用程序。它提供了一种简单而强大的方式来创建带有子窗口模型列表的多文档界面(MDI)。

要创建带有子窗口模型列表的MDI,可以按照以下步骤进行操作:

  1. 创建主窗口(MDI容器): 首先,需要创建一个主窗口,作为MDI的容器。可以使用Workspace类来实现这一点。例如:class MyWorkspace : Workspace() { init { // 设置主窗口的标题和图标等属性 title = "My MDI Application" icon = Image("icon.png")
代码语言:txt
复制
       // 添加子窗口模型列表
代码语言:txt
复制
       dock<MyViewModel>()
代码语言:txt
复制
       dock<AnotherViewModel>()
代码语言:txt
复制
       // 添加更多子窗口模型...
代码语言:txt
复制
       // 设置主窗口的布局
代码语言:txt
复制
       root = borderpane {
代码语言:txt
复制
           // 设置布局的其他属性...
代码语言:txt
复制
       }
代码语言:txt
复制
   }

}

代码语言:txt
复制
  1. 创建子窗口模型: 接下来,需要创建子窗口模型。子窗口模型是一个继承自ViewModel的类,用于管理子窗口的状态和行为。可以使用find函数来获取子窗口模型的实例。例如:class MyViewModel : ViewModel() { // 子窗口的属性和行为... }
  2. 创建子窗口视图: 然后,需要创建子窗口的视图。子窗口视图是一个继承自View的类,用于定义子窗口的外观和布局。可以使用find函数来获取子窗口视图的实例。例如:class MyView : View() { // 子窗口的布局和控件... }
  3. 在主窗口中添加子窗口模型: 在主窗口的初始化块中,使用dock函数将子窗口模型添加到主窗口中。例如:dock<MyViewModel>() dock<AnotherViewModel>() // 添加更多子窗口模型...

通过以上步骤,就可以创建一个带有子窗口模型列表的MDI应用程序。每个子窗口模型都有自己的视图,并且可以独立管理其状态和行为。

关于TornadoFX的更多信息和示例,请参考腾讯云的TornadoFX官方文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例

PyQt5 MDI(多文档窗口)QMidArea简介 一种同时显示多个窗口方法是,创建多个独立窗口,这些独立窗口被称为SDI(Single Document Interface 单文档界面),每个窗口都有自己菜单系统...,工具栏等,这需要占用很多资源 MDI(Multiple Document Interface 多文档界面)应用程序占用较少内存资源,窗口可以放在主窗口容器中,这个容器控件被称为QMidArea...QMidArea控件通常占据在QMainWindow对象中央位置,窗口在这个区域是QMdiSubWindow类实例,可以设置任何QWidget作为窗口对象内部控件,窗口MDI区域进行级联排列布局...QMidArea类和QMdiSubWindow类中常用方法 方法 描述 addSubWindow() 将一个小控件添加在MDI区域作为一个新窗口 removeSubWindow() 删除一个窗口小控件...() 关闭活动窗口 subWindowList() 返回MDI区域窗口列表 setWidget() 设置一个小控件作为QMdiSubWindow实例对象内部控件 QMdiArea多重文档界面代码实例

3.8K21

保证相同类型MDI窗体只会被打开一次方法

本文转载:http://www.cnblogs.com/Ricky81317/archive/2008/09/17/1292443.html 看到论坛中有朋友问,如何可以保证在MDI主窗体中,同一类型窗体只能打开一次...我实现基本思路是: 一般每个子窗体都是继承自Form类型,不同窗体分别代表不同功能,因此只需要判断当前MDI打开窗体类型中有没有当前需要打开窗体类型就行了,如果有,则直接激活,如果没有则创建一个并加到主窗体中...具体实现起来有很多种办法,这里只写出一个利用泛型实现: /// /// 打开MDI窗口并附加到MDI窗口中,如果MDI窗口中已经存在相同类型窗口,则直接激活 /// /// MDI窗体类型 /// MDI主窗体引用 //.../ 当前创建或得到MDI窗体类型实例引用 private T OpenUniqueMDIChildWindow(Form mdiParent) where

1K10
  • 构建布局良好Windows程序

    () 退出整个应用程序,关闭所有窗体 this.Close()  关闭当前窗体 都会触发FormClosed事件和FormClosing事件 带图片工具栏 属性名称     说明 displaystyle...   是否显示图像和文本 image    将显示图像 imageScaling   是否调整图像大小 TextimageRelation  图像与文本相对位置 ToolStrip工具栏类型 Button...键选择多个控件,再设置anchor属性,可以一次选中多个控件 使用dock(停靠控件) dock属性 将控件停靠在窗体边缘或填充窗体 当某个控件需要充满整个窗体时,设置控件dock属性是最快捷方式...SdI:比如记事本 Word等 mdi:多窗口应用程序 比如Excel 浏览器等 至少由连个窗口组成 包括顶级框架窗口(也叫mdi容器)其他文档窗口(也叫窗口) 创建mdi步骤 1父窗体ISMDIIContainer...属性设为true 窗体Mdiparent属性设为父窗体 注意: 设置了MDI窗体不能用SHowDialog() 建立窗体窗口列表步骤 设置父窗体菜单控件mdiwindowlistItem属性选定为窗口菜单项

    1.6K60

    C#学习笔记—— 常用控件说明及其属性、事件

    若要在该菜单项中显示MDI窗口列表,则设置该属性值为true,否则设置该属性值为false。默认值为false。...25、MDI 应用程序设计 1.MDI应用程序概念 在前面的章节中,所创建都是单文档界面(SDI)应用程序。这样程序(如记事本和画图程序)仅支持一次打开一个窗口或文档。...MDI程序中应用程序窗口称为父窗口,应用程序内部窗口称为窗口。虽然 MDI应用程序可以具有多个子窗口, 但是每个子窗口却只能有一个父窗口。此外,处于活动状态窗口最大数目是 1。...一个窗口在功能上可能与父窗口其他窗口不同,例如,一个窗口可能用于编辑图像,另一个窗口可能用于编辑文本,第 3 个子窗口可以使用图形来显示数据,但是所有的窗口都属于相同MDI窗口。...所有 MDI 窗口均层叠在 MDI 父窗体工作区内)。

    9.7K20

    CC++ Qt MdiArea 多窗体组件应用

    MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们所有的窗体创建与操作都在这个容器内进行...MDI窗体控件类似于画布,该控件只具备展示窗体功能,无法实现生成窗体,所以我们需要在项目中手动增加自定义Dialog对话框,并对该对话框进行一定定制。...MDI formDoc->show(); //在单独窗口中显示}// 关闭全部void MainWindow::on_actionClose_triggered(){ ui->mdiArea...->closeAllSubWindows(); //关闭所有窗口}代码运行效果如下:图片当用户点击MDI模式时,我们则执行以下代码,将所有已存在窗体合并为一个类似于TabWidget窗体组件。...else { ui->mdiArea->setViewMode(QMdiArea::SubWindowView); // 窗口模式 ui->actionLine

    1.1K40

    C++ Qt开发:MdiArea多窗体组件

    activeSubWindow() 返回当前激活窗口,如果没有激活窗口则返回nullptr。 closeActiveSubWindow() 关闭当前激活窗口。...读者在使用MDI组件时,需要在UI界面中增加mdiArea控件容器,之后所有窗体创建与操作都要在容器内进行,其次由于MDI窗体组件仅仅是一个画布只具备限制窗口作用,无法实现生成窗体,所以需要在项目中手动增加自定义...这段代码片段展示了一个使用QMdiArea创建多文档界面的主窗口基本结构和初始化设置。在这个窗口中,用户可以打开和管理多个子窗口,每个子窗口可以包含一个独立文档。...(this); // 文档窗口添加到MDI ui->mdiArea->addSubWindow(formDoc); // 在单独窗口中显示 formDoc->show...(); } 运行后可以点击打开窗体创建,这个创建是无限制,如下图; 1.3 转换窗体模式 针对模式转换此处提供了三种模式,分别是MDI模式、级联模式及平铺模式,三种模式实现只需要调用不同接口即可实现

    1.4K10

    CC++ Qt MdiArea 多窗体组件应用

    MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们所有的窗体创建与操作都在这个容器内进行...MDI窗体控件类似于画布,该控件只具备展示窗体功能,无法实现生成窗体,所以我们需要在项目中手动增加自定义Dialog对话框,并对该对话框进行一定定制。...MDI formDoc->show(); //在单独窗口中显示 } // 关闭全部 void MainWindow::on_actionClose_triggered() { ui->...mdiArea->closeAllSubWindows(); //关闭所有窗口 } 代码运行效果如下: 当用户点击MDI模式时,我们则执行以下代码,将所有已存在窗体合并为一个类似于TabWidget...窗口 Dialog *formDoc; // 如果打开则获取活动窗体 if (ui->mdiArea->subWindowList().count() > 0) {

    1K20

    c++获取子类窗口句柄位置_C++中各种获取窗口句柄方法「建议收藏」

    AfxGetMainWnd AfxGetMainWnd获取自身窗口句柄 HWND hWnd = AfxGetMainWnd()->m_hWnd; GetTopWindow 函数功能:该函数检查与特定父窗口相联窗口...z序(Z序:垂直屏幕方向,即叠放次序),并返回在z序顶部窗口句柄。...返回值: 如果函数成功,返回值为在Z序顶部窗口句柄。如果指定窗口窗口,返回值为NULL。 GetForegroundWindow 函数功能:该函数返回当前系统前台窗口窗口句柄。...如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建全局原子。...AfxGetMainWnd ( ) -> SetWindowText (_T(“Application title”) ) //Set title for View’s MDI child frame

    2.4K30

    使用C#开发数据库应用程序

    5-2:创建多文档界面应用程序(MDI) a.为什么使用MDI 比如:记事本 如果想在一个窗口中打开多个文件,就要使用MDI(多文档界面)应用程序。...b.什么是MDI 比如:在Microsoft Excel中,我们可以同时打开多个Excel文档,而不需要新开一个Excel窗口,这种应用程序我们称为MDI(多文档界面); c.如何创建MDI (1...设置窗体:在调用打开窗体Show()方法前,在代码中将窗体MdiParent属性设为this】 例如: //用户单击菜单项时,出现创建学员用户窗口 private void tsmiNewStudent_Click...=this; addStudentForm.Show();//显示创建学员用户窗体 } (2)为父窗体添加窗体列表【在父窗体中添加一个菜单Name(tsmiWindows),添加一个"窗口"菜单项...c.使用图片框、图像列表、计时器控件 图片属性 Image 图片框显示图像 SizeMode 指定如何处理图片位置和控件大小 图像列表属性 Images 存储在图像列表所有图像

    5.9K30

    【愚公系列】2023年11月 Winform控件专题 Form控件详解

    欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms中用户界面元素,它们可以用于创建Windows应用程序各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...我们通过循环创建了 20 个 Label 控件,并将他们添加到窗口中。由于窗口大小和控件总大小超过了窗口可见区域,所以会自动显示滚动条。...:将窗体放在其父窗口中央,适用于窗口情况。...添加窗体方式有两种,一种是在代码中创建一个新窗体,另一种是在窗体设计器中创建一个窗体控件。...MDI应用程序:使用Form可以创建MDI父窗体,作为多文档界面应用程序窗口。模式窗口:Form可作为模式窗口使用,即在窗体弹出时阻止用户与其它窗体交互。

    2.3K21

    UI自动化 --- UI Automation 基础详解

    UI Automation tree(UI自动化树) UI自动化树可以通过过滤来创建仅包含特定客户端相关 AutomationElement 对象视图。...作用域是定义视图范围,从一个基本元素开始:例如,应用程序可能只想查找桌面的直接元素,或者某个应用程序窗口所有后代元素。过滤是定义要包含在视图中元素类型。...例如,您可以使用 Invoke 控件模式来处理可以调用控件(如按钮),并使用 Scroll 控件模式来处理带有滚动条控件(如列表框、列表视图或组合框)。...控件模式与UI关系类似于接口与组件对象模型(COM)对象关系。在COM中,您可以查询对象以了解它支持哪些接口,然后使用这些接口访问功能。...属于窗口控件示例是顶级应用程序窗口(Microsoft Word、Microsoft Windows 资源浏览器等)、多文档界面 (MDI)窗口和对话框。

    2.3K20

    『PyQt5-基础篇』| 04 Qt Designer初步快速了解

    入口之前文章设置好了Qt Designer工具;现在直接在Pycharm中打开;路径为:工具-External Tools-Qt Designer图片图片2 Qt Designer-Widget Box一般情况下,我们创建一个应用程序选是...Main Window;选择后进入到Qt Designer设计界面:图片2.1 窗口部件盒(Widget Box)最左侧就是Widget Box;图片所有同类控件会在一起显示;2.2 Layouts...Check Box多选框图片Command Link Button命令链接按钮图片Dialog Button Box对话框按钮图片2.5 Item Views(Model-Based)item视图(基于模型...)item小部件(基于item);控件说明 List Widget 列表小部件Tree Widget树小部件Table Widget 表格小部件 2.7 Containers容器控件说明 示例Group...Box组合框图片Scroll Area滚动区图片Tool Box工具箱 图片Tab Widget选项卡图片Stacked Widget堆栈控件图片Frame边框控件图片Widget窗口控件图片MDI

    97970

    Android开发人员不得不学习JavaScript基础(二)

    1、window对象 window对象是BOM核心,window对象指当前浏览器窗口,window对象中有很多种方法供开发者调用: 方法 描述 alert() 显示带有一段消息和一个确认按钮警告框...prompt() 显示可提示用户输入对话框 confirm() 显示带有一段消息以及确认按钮和取消按钮对话框 open() 打开一个新浏览器窗口,或者查找一个已命名窗口 close() 关闭浏览器窗口...方法/属性 描述 length 返回浏览器历史列表URL数量 back() 加载history列表前一个URL forward() 加载history列表下一个URL go() 加载history...width 屏幕宽度,单位为像素 6、DOM对象 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档标准方法。...DOM操作: 方法 说明 createElement(ele) 创建一个新元素节点 createTextNode() 创建一个包含着给定文本新文本节点 appendChild() 指定节点最后一个节点列表之后添加一个新节点

    74030
    领券