c++ - 使用for-loop Qt c++画圆

标签 c++ qt loops for-loop

我想在 C++ 中使用 Qt 绘制 7 个圆

我想使用for循环; 但是,我做不到,我实际上想使用窗口的宽度来平均间隔我的圆圈,但效果不佳。我哪里错了。我是编程新手。 :)

这是我的代码:

for (int i = 0; i <= 6;i++)
{
    int x = 0;
    int y = (width()/6);
    x =y+x;
    canvas.drawEllipse(x, 40, 20, 20);
}

好的,我正在处理它,现在我有五个带有这段代码的圆圈

     int x = 0;
     for (int i = 0; i <= 6;i++)
   {

    x = x+(width()/6);
    canvas.drawEllipse(x, 40, 20, 20);
    }

但我希望第一个圆圈开始于 canvas.drawEllipse(0, 40, 20, 20);

此外,如果我从一页切换到另一页,如何更改一个圆圈的颜色。它是一个大约有 7 页的应用程序,每个圆圈代表一个页面,例如,如果我在第 1 页,圆圈 1 应该是绿色的。
有人告诉我为此创建一个函数,但我该如何引用我的页面和圈子呢?谢谢。

最佳答案

让我们在这里做一些数学运算。

设 Screen_Width 为屏幕的宽度,以像素为单位。 设 Screen_Height 为屏幕的高度,以像素为单位。

理想圆的宽度与直径相同,即 2 * 半径。
然而,这是现实,所以我们必须考虑线宽。 所以圆的实际宽度为:Diameter + 2 * Circle_Line_Width;

此外,这是现实而非理想条件,我们希望圆圈之间有间距。
设 Spacing 为圆外线之间的距离,以像素为单位。

设 Circle_Quantity 为圆的数量。

所以,圆占据的总宽度为:

Circle_Width = Diameter + 2 * Circle_Line_Width + (Space_Between_Circles / 2);

一个圆(带间距)的可用空间是:

Available_Circle_Space = Screen_Width / Circle_Quantity;

技巧来了,找到圆心。
让我们找出圆属性的值。 求解直径:

Diameter = Circle_Width / (2 * Circle_Line_Width + (Space_Between_Circles/2));

请记住,圆心将是直径的中点,即 Diameter/2

所以,第一个中心点是:

  0 /*Left edge ordinate */
  + (Space_Between_Circles/2)
  + Circle_Line_Width
  + (Diameter / 2)

下一个中心点在:

Previous_Center_Point
  + (Space_Between_Circles/2)
  + Circle_Line_Width
  + (Diameter / 2)

这应该向您展示如何制作一个 for 循环来绘制所有圆圈。

关于c++ - 使用for-loop Qt c++画圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176766/

相关文章:

c++ - 悬停时 QAction 图标更改

c++ - 简单素数程序....我的代码/脚本有什么问题?

c++ - 为什么重命名我的变量可以防止段错误?

c++ - 是否可以对基类非 QObject 类的虚函数进行槽化

c++ - Qt 宏关键字导致名称冲突

c++ - 如何在 Qt Widget 中重新定义 Z-Order

python - 创建单个列表项的列表乘以 n 次

c - 从链表 (C) 打印值时出现段错误

c++ - STL 容器中的 const 指针

c++ - 如何找到一帧中物体的质心与相邻帧之间的欧氏距离