Frage : ZeichnungsBalkendiagramm

Ich muss Balkendiagramm machen basiert auf irgendeiner unterschiedlicher Länge der Stäbe, die in der Reihe speicherten, ich habe Versuch zum behördlichen Erlass dieser Code, aber alle Stäbe kommen mit der gleichen Länge, die ich denke, dass ich Problem in den Schleifen habe, aber ich nicht lnow tue, wie ich es lösen kann
include diese Frage der Funktionscode und der Schnappschuß des gegenwärtigen Resultats. Auch gibt es leichte Art, x-und y-Mittellinie zu zeichnen.

many dankt
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
void Linie:: paintEvent (QPaintEvent *c)
{
    //lines
    QPainter Linie (diese);
    line.setRenderHint (QPainter:: Antialiasing, richten) aus;
    line.setPen (QPen (Quart:: Schwarzes, 2, Quart:: SolidLine, Quart:: RoundCap, Quart:: MiterJoin));
    line.setBrush (QBrush (Quart:: Schwarzes, Quart:: SolidPattern));
    line.drawLine (50.50.50.200); Mittellinie //-Y
    line.drawLine (50.200.250.200);  Mittellinie //-x





    //-Viereck
    int a [5] = {20.60.120.30.200};    //length = a []
    int x= 50.0;
    int y= 200;

    für (int i=0; i<5; i++)
    {
        int Inc. = 200/5;
        für (int j=0; j<200; j=j+inc)
        {

            QRectF rect ((x+j), (y-a [i]), 0.0, a [i]);
            line.setPen (QPen (Quart:: Grün, 8, Quart:: SolidLine, Quart:: RoundCap, Quart:: MiterJoin));
           line.drawRect (rect);

        }
    }

}

Antwort : ZeichnungsBalkendiagramm

Zuerst benötigen Sie nicht zwei Schleifen.  Ihr Viereck sollte wie definiert werden:

Links:       (i * Inc.) + x
Oberseite:       y - a [i]
Recht:      Links + Linie Breite
Unterseite: Y

So völlig die innere Schleife loswerden…  Der Code, den ich bekannt gab, sollte geben Ihnen eine Idee von, was erforderlich ist.  Ich habe nie die Quartprogrammierung getan.  Mich informieren, wenn Sie mehr Erklärung benötigen.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Linie aufheben:: paintEvent (QPaintEvent *c)
{
    //lines
    QPainter Linie (diese);
    line.setRenderHint (QPainter:: Antialiasing, richten) aus;
    line.setPen (QPen (Quart:: Schwarzes, 2, Quart:: SolidLine, Quart:: RoundCap, Quart:: MiterJoin));
    line.setBrush (QBrush (Quart:: Schwarzes, Quart:: SolidPattern));
    line.drawLine (50.50.50.200); Mittellinie //-Y
    line.drawLine (50.200.250.200);  Mittellinie //-x

    //-Viereck
    int a [5] = {20.60.120.30.200};    //length = a []
    int x= 50.0  ;
    int y= 200;
    int Inc. = 200/5;

    für (int i=0; I<5>
           
Weitere Lösungen  
 
programming4us programming4us