将对话框控件移到标签中?

时间:2016-02-15 02:52:20

标签: c++ windows visual-studio-2010 user-interface mfc

我有一个包含多个控件的对话框。接下来,我添加了第三方网格控件,这是非常笨重的。它看起来不错,但屏幕空间不足。一个理想的选择是拥有2个选项卡,一个带有现有控件,另一个用于保持网格。

看起来好像这个"标签"方法将要求完全重写代码。有没有更好的方法来做到这一点?如果要将GUI控件移动到您知道的选项卡中,是否有任何特定问题?

2 个答案:

答案 0 :(得分:1)

如果您选择标签式对话框,请检查此http://hallofshame.gp.co.at/index.php?file=tabs.htm&mode=original以避免最琐碎的问题:

  • 您应避免将对话框控件(例如“确定”和“取消”)按钮放到选项卡中,因为它们适用于整个对话框而不是选定的选项卡

  • 在对话框中设置标签被认为是一个坏主意,因为用户在单击“确定”时无法看到所有输入。例如,用户在tab1上更改某些内容,单击tab2并单击“确定” - 现在用户的印象是她没有更改任何内容(在tab2上),但按“确定”仍然会应用他的更改。当然,有时标签是不可避免的,但如果您可以避免在模态对话框中使用它们,请避免使用。一个不好的例子是http://hallofshame.gp.co.at/find95.htm,其中所有搜索参数都在多个视觉上不相关的标签上输入。

  • 标签隐喻适用于多个文档,不适用于多个输入。 https://en.wikipedia.org/wiki/Tab_(GUI)

我不想在这里使用标签。您可以使对话框更大,您可以使网格更小,您可以使用布局允许用户使整个对话框更大并从网格中查看更多,并且您可以使用拆分器让用户自定义GUI。

(我发现很多时候使用GUI设计器是一个坏主意,比如winforms designer。最初布局控件是一个很大的帮助。但是从其他角度来看它确实是一个障碍,比如隔离代码(和把它放到另一个标签上,继承和扩展gui片段。总之,你将放弃OOP的所有灵活性和权力,只是为了更快地将小部件扔到你的表单中。

如果你在代码中有现有的表单,你可以用它来创建一个类,并为网格的东西创建另一个类。然后重构你的表单以获得一个标签页,并在第一个标签上放置第一个类的实例,在第二个标签上放置网格实例。

一旦你可以用一些OOP隐藏实际gui框架的复杂性,从代码编程GUI并不一定困难。如果你想看一个例子,请告诉我。)

答案 1 :(得分:0)

它可以变得如此简单,但是如果你使用的是winforms设计器,为什么你只能剪切控件,放入标签控件并粘贴控件?如果您遇到代码丢失处理程序的问题,您可以先将部分源代码复制到记事本中,然后在屏幕上移动控件后将其粘贴回来。

您也可以尝试拖放到标签控件。只需将屏幕一角的2个标签缩小即可。当您拖入时,它会在您放下时保持位置。一个所有控件都在,扩展它。

这样的事情适用于winforms + c#...我不知道您使用的屏幕设计编辑器或Gui技术。我甚至不确定平台。显然,如果不是窗户,那么我已经离开了标记......