我继承了一个基于Qt的应用程序,它通过将详细信息屏幕作为单独的窗口呈现来处理主/明细关系。主窗口包含一个列表,当您点击一行时,会打开一个单独的详细信息窗口。如何将一个窗口“嵌入”另一个窗口
在代码库中,详细信息窗口由QML文件和匹配的.cpp文件(主窗口也有自己的.cpp文件)处理。我面临的问题是,一个新客户希望我为他们修改这个应用程序,除了他们希望一切都发生在一个窗口内。他们希望列表显示在左侧,然后当用户点击一行时,详细信息屏幕将显示在窗口右侧的自己的面板中(但不在单独的窗口中)。
由于各种原因,我不能轻易重构此应用程序。对我而言,更快的解决方案是继续在自己的窗口中显示详细信息屏幕,但要使其成为无边框窗口并将此无边框窗口置于主窗口顶部(右侧),以使其看起来像是一个面板在主窗口内。
Qt可以这样吗?过去我编写了一些Windows应用程序,这些应用程序与Windows API有关,但我不知道在本机Mac OS应用程序中是否可以这样做,所以我不知道Qt是否可以在某些情况下处理它自动方式。
您可以在自己的'Item {}'类型中分开部分可重用的UI,并在特定容器的内部或外部使用它。如果你只能处理QML,那么它可能意味着从分离的项目中创建一个新的.qml文件,并根据应用程序项目的组织方式将其放到资源文件或其他qml文件的目录中。 – AlexanderVX
我同意重构项目。我最近有一个类似的问题,发现reparenting实现对接行为的方式:http://stackoverflow.com/questions/41490652/docking-in-qtquick/41520315#41520315 –
@AlexanderVX:我不能真正重构的原因这是我基本上制作我们的主要应用程序的副本,然后修改我的副本。在做出这些更改后,我需要继续更新我的副本,并对原始副本进行更改(换句话说,我需要保留副本与原始副本保持同步)。我对副本做出的改变越激烈,同步会变得越困难。我曾经为我们的客户之一做过这件事,但由于99%的更改都在QML方面,所以保持版本同步并不是什么大问题。 – MusiGenesis