繁体   English   中英

如何使用 GUI 在 C++ 中创建框架/窗口?

[英]How to create a frame/window in C++ with GUI?

我想基本上用 C++ 创建一个 window。它应该有一个类似控制面板的结构,可以选择切换按钮。 按钮的图像应来自 bitmap,一个用于打开,另一个用于关闭。

在此处输入图像描述

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

你应该看看这些:

  • Qt
  • GTK+
  • wxWidgets

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

编辑:

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

为什么不让它变得简单呢? 在 Java 中生成您的代码,直到拥有 jar 文件,然后使用 Launch 为该 jar 中的三个主要操作系统中的每一个创建一个可执行文件。

Java 具有框架 (JFrames)、面板 (JPanels) 和按钮 (JButtons) 等控件,您需要构建项目,它们提供了许多方法来自定义每个 object,并且它们显示每个 ZA8CFDE6331B666Z 的文档和原型,至少在NetBeans。

Java 也是面向对象的,但如果您必须坚持使用 C++ 来获得 class,那么祝您一切顺利。 这种易用性,因为它与 C++ 非常相似,是导致我在二十年前放弃 Java 的语言的原因,今天是我回来检查 ZF6F87C9FDCF8B3C3C207F93 状态的第一天。 它没有改变,我认为没有理由返回 go。

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

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

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

  • Windows
  • 苹果电脑
  • Linux

尽管您提供了哪些信息:我建议使用SFML 库或类似的东西。 有可用的教程,它在跨平台上运行良好。 要打开 window,您只需像这样实例化 class :

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

绘制按钮有点困难。 许多库都提供了自己的解决方案,因此我将避免给出具体示例,以下仅是伪代码。 不过,一般来说,您希望捕获用户单击的时间,然后在屏幕上获取他们的鼠标/指针 Position (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 从 window 左上角的 0、0 开始,不同的库做的不同。 因此,您需要检查您使用的库是如何实现它的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM