【问题标题】:How to get the minimize and maximize buttons to appear on a wxDialog object如何让最小化和最大化按钮出现在 wxDialog 对象上
【发布时间】:2010-10-27 09:07:21
【问题描述】:

我在 Linux 上使用 wxDialog 对象时遇到了问题 在该对象的构造函数中,我传递了相关的样式标志 (wxCAPTION|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxCLOSE_BOX|wx_RESIZE_BORDER),但按钮不显示。当我在 wxformbuilder 中设计类时,它们会出现在显示的设计中,但不会出现在我正在运行的应用程序中。

我目前正在使用 wxWidgets 2.8.7 并在 Scientific Linux 5 (RHEL 5) 上运行。有关如何解决此问题的任何建议或想法?

编辑:顺便说一句,这与this question有关

【问题讨论】:

  • 尝试调用 MakeModal(true);如果您真的需要按钮,禁用所有其他窗口并使用框架,否则它不起作用(也可以考虑 wxMiniFrame)

标签: c++ wxwidgets


【解决方案1】:

如果你在 wxGTK 上创建一个对话框,那么在构建过程中

gtk_window_set_type_hint(GTK_WINDOW(m_widget), GDK_WINDOW_TYPE_HINT_DIALOG);

被调用,这让窗口管理器为这个窗口显示什么装饰。因此,如果您给它样式但没有显示任何按钮,那么您无能为力。无论如何,我认为在禁用父框架时显示 wxFrame 应该也可以。

【讨论】:

  • 我什至无法编译。您是否有参考如何使用此功能的链接?它是 wxWidgets 的一部分吗?
  • 正如我所写:这是 wxWidgets 源代码的一部分,在对话框构建期间被调用。这表明不是 wxWidgets 负责,而是窗口管理器决定了对话框的装饰方式,因此您无能为力。 wxMINIMIZE_BOX 和 wxMAXIMIZE_BOX 被简单地忽略。您无法在当前 Linux 桌面上使用这些按钮进行对话框。
【解决方案2】:

你能用 wxWindow 代替 wxDialog 吗?也许最小化对话框没有意义,但这些是应用程序窗口的常用操作。

【讨论】:

  • 这实际上是代码的编写方式,但我似乎无法获得我想要的模式行为(请参阅我的编辑中的链接)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 2019-06-15
  • 2016-10-04
  • 1970-01-01
  • 2012-08-28
  • 2011-02-09
  • 2016-03-04
相关资源
最近更新 更多