Qt中的GUI组合 我有使用WiNAPI在爪哇、C++和C++中构建GUI的经验。我尝试用Qt在C++中尝试我的第一个GUI,我有一个过渡问题。在其他三种GUI范例中的任何一种中,我都可以创建自己的GUI组件,扩展现有的JPanel等,并最终得到一个定制的GUI元素,可以添加到其他GUI窗口中。C#在这方面特别擅长,因为我创建的任何东西在编译后都会自动显示在工具箱中

Qt中的GUI组合 我有使用WiNAPI在爪哇、C++和C++中构建GUI的经验。我尝试用Qt在C++中尝试我的第一个GUI,我有一个过渡问题。在其他三种GUI范例中的任何一种中,我都可以创建自己的GUI组件,扩展现有的JPanel等,并最终得到一个定制的GUI元素,可以添加到其他GUI窗口中。C#在这方面特别擅长,因为我创建的任何东西在编译后都会自动显示在工具箱中,c++,qt,user-interface,custom-controls,C++,Qt,User Interface,Custom Controls,据我所见,Qt中只有两个选项,我希望我遗漏了一些东西。这些选择包括: 创建一个自定义小部件,然后使用提升到正确小部件的小部件容器导入该小部件 构建我喜欢的内容,并将其拖到scratchpad,从那里我可以将其复制到我的心上 问题是我希望在运行时动态添加/删除GUI元素。例如,我有一个模型视图控件模式。视图和控件是GUI中的两个不同面板。当我切换到一个面板中的不同视图时,我希望从另一个面板中删除该控件,并将其替换为新视图的正确控件 据我所知,我可以使用定制的小部件来实现这一点,但对于组合中的大

据我所见,Qt中只有两个选项,我希望我遗漏了一些东西。这些选择包括:

  • 创建一个自定义小部件,然后使用提升到正确小部件的小部件容器导入该小部件
  • 构建我喜欢的内容,并将其拖到scratchpad,从那里我可以将其复制到我的心上
问题是我希望在运行时动态添加/删除GUI元素。例如,我有一个模型视图控件模式。视图和控件是GUI中的两个不同面板。当我切换到一个面板中的不同视图时,我希望从另一个面板中删除该控件,并将其替换为新视图的正确控件

据我所知,我可以使用定制的小部件来实现这一点,但对于组合中的大量小部件来说,要实现更大的功能,似乎非常费力。虽然我可以在scratchpad中完成我想要的合成,但我不知道如何动态添加我在scratchpad中保存的东西

也有可能是有一种Qt方式做我没有发现的事情。例如,我有一些朋友使用不同的选项卡成功地创建了上述效果。这似乎是一个便宜的答案,我可以使用它,但我相信Qt有足够的灵活性让我构建任何类型的GUI

任何建议都会有帮助

---------------------改进示例--------------------

让我使用@m7913d给出的示例代码。()假设我想把gui的这一部分变成一个可重用的组件,我可以将它添加到我想要的任何gui中。我该怎么做


如果这是C#我将创建一个新的用户控件,添加GUI元素,设置使单元作为一个整体工作的代码,并可能作为一个整体设置事件侦听器或用户控件的属性。然后我可以在GUI的其余部分随意实例化、添加和删除它们。这就是我想要的。

我对Qt只有一点经验,但我知道每个窗口都是一个窗体,它生成一个类。因此,我可以使用常规指针和内存分配等创建类的实例。为了在windows之间交换信息,Qt有一个信号/插槽系统,在该系统中,事件触发可由插槽读取的信号。例如,如果我想在一个窗口中单击按钮并在另一个窗口中更改一个值,我可以创建一个从按钮和插槽到该值的信号,并处理从该窗口发出的调用。我很难理解您想要实现的目标(我自己知道Qt、.NET WinForms和一些原始WinAPI)。当然,使用Qt,您可以通过继承现有小部件来扩展它们。你可以将子部件添加到布局中并删除它们,或者只是隐藏和显示它们。然后,我从来没有听说过“模型-视图-控件”模式,只有“模型-视图-控制器”(在这种模式中,控制器肯定不是GUI元素)@AlexanderHuszagh我知道MVVM,我指的是写“模型-视图-控件”(没有“ler”)的OP解释“视图和控件在GUI中是两个不同的面板”——如果他指的是MVC,那么控制器在UI中是不可见的。Qt允许您完全动态地更改布局。事实上,QT设计器中所做的一切都被翻译成普通C++代码。在Qt设计器生成的C++代码中查看它可能会有帮助。