【问题标题】:How to create a frame/window in C++ with GUI?如何使用 GUI 在 C++ 中创建框架/窗口?
【发布时间】:2016-12-02 13:26:46
【问题描述】:

我想用 C++ 创建一个窗口。它应该有一个类似结构的控制面板,带有切换按钮的选项。按钮的图像应来自位图,一个为 ON,另一个为 OFF。

它应该有一系列这样的单独控制按钮,比如控制面板。我应该能够切换开/关。但我必须使用 C++ 构建这个小型应用程序。请指导我开始并继续?

【问题讨论】:

  • 看过wxWidgets的Qt之类的库吗?
  • 任何特定的操作系统?任何框架首选?原生还是基于浏览器?
  • @BoPersson Win 7,我不喜欢使用第 3 方框架。这是一个原生的 Windows 应用程序

标签: c++ user-interface button window frame


【解决方案1】:

你应该看看这些:

  • Qt
  • GTK+
  • wxWidgets

然后根据您的需要和偏好进行选择。

编辑:

如果您使用的是 Windows,则可以使用 WinAPI。但是您失去了代码在其他操作系统之间的可移植性。

【讨论】:

    【解决方案2】:

    不幸的是,C++ 中的 GUI 并不是那么简单。

    您将不得不在某些时候与操作系统交互来实现这一点,这意味着您需要使用某种库。

    为了更好地回答您的问题(如 cmets 中所述),您需要确定您的目标是哪种操作系统?通常的三个是:

    • 窗户
    • 苹果机
    • Linux

    您提供了哪些信息: 我建议使用SFML Library 或类似的东西。有可用的教程,它可以很好地跨平台运行。要打开一个窗口,您只需像这样实例化一个类:

    sf::Window window(sf::VideoMode(800, 600), "My window");
    

    绘制按钮有点困难。 许多库都提供了自己的解决方案,因此我将避免给出具体示例,以下仅是伪代码。 不过,一般来说,您希望捕获用户单击的时间,然后在屏幕上获取他们的鼠标/指针位置 (x, y),并检查按钮矩形每个角的边界:

    if (ButtonPressed())
    {
        int currentX = GetMousePositionX();
        int currentY = GetMousePositionY();
    
        if (currentX > button.Left() &&
            currentX < button.Right() &&
            currentY > button.Top() &&
            currentY < button.Bottom())
        {
            // The button is pressed
        }
    }
    

    上面的代码示例确实假设 MousePosition 从窗口左上角的 0、0 开始,不同的库做的不同。因此,您需要检查您使用的库是如何实现它的。

    您可能还想考虑完全放弃 GUI(如果这真的只是一个小项目,C++ 中的 GUI 可能会非常困难)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      相关资源
      最近更新 更多