Forum: PC-Programmierung QWT Dial und Visual Studio 2008


von Maxim (Gast)


Angehängte Dateien:

Lesenswert?

Hallo alle zusammen,


ich habe folgende Problem:
Programmiertools: Visual Studio 2008 mit qt dazu(qwt).
Ich versuche in einem QWTDial einen Text zu schreiben (seh bitte 
Anhang).

In der erste Anhang "Test_dial.png" ist das Dial ohne Text und in der 
zweite Anhang ""Test_dial_2.png" ist mit dem Text, die ich meine.

Meine Frage wie kann ich das machen, um dieses Text so genau geschrieben 
zu bekommen.
Ich habe versucht durch einen Label durch den QT Designer reinzufügen, 
aber das ist nicht der Richtige Weg.
Der Grösse des Dials verändert sich aber leider der Text nicht.


Für jeden Tipps bin ich sehr dankbar.

von pks (Gast)


Lesenswert?

Da wirst Du wohl das QWTDial beerben und das ResizeEvent überladen 
müssen.

von Maxim (Gast)


Lesenswert?

Danke für die Antwort. Das werde ich noch schauen wie ich das ambesten 
machen kann.
Eine andere Frage:

Kann ich in der Dial einen Grenzwert setzen z.B: wenn ich die 15 
erreiche,  der Rand Rot wird (so quasi wie im Auto)?

Danke in voraus.

von pks (Gast)


Lesenswert?

Auch da würd ich sagen - paintEvent überladen und in Abhängigkeit des 
aktuellen Wertes mit QWidget::setPalette() die gewünschte Farbe setzen. 
Wenn Du da was spezielles haben willst, wirst Du aber wohl an den 
Qwt-code ran müssen, siehe drawContents().

von Maxim (Gast)


Lesenswert?

Hast du vielleicht einen Beispiel oder einen Tutorial ?

Danke in voraus

von pks (Gast)


Lesenswert?

So in der Art...
1
class MyDial: public QWTDial
2
{
3
public:
4
...
5
6
protected:
7
   void paintEvent(QPaintEvent *e);
8
};
9
10
void MyDial::paintEvent(QPaintEvent *e);
11
{
12
   // Dein code...
13
   // z.B.:
14
   if(...)// Bedingung für andere Farbe
15
   {
16
      QPalette p = this->palette();
17
      p.setColor(QPalette::WindowText, Qt::red);
18
      this->setPalette(p);
19
   }
20
21
   QWTDial::paintEvent(e);
22
}

von Maxim (Gast)


Lesenswert?

Hallo,


@pks

Danke danke für die Tipps.
Es hat mich sehr viel geholfen.
Mit der Farben habe ich hin gekriegt.
Nur mit der oben gennate Problem komme ich nicht weiter.
Ich weiss es nicht wie soll ich den Tabs mit dem Text setzen.
Das QwtDial habe ich mit dem Designer gemacht..


Wenn du mir noch einen Tipps gibt, bin ich sehr dankbar.


Danke in Voraus.

von pks (Gast)


Lesenswert?

Hab ich das richtig verstanden - Du hast ein Label eingefügt, aber 
sobald die Größe des Dial geändert wird passt die Position nicht mehr?

Ich nehme an Du möchtest, dass sich Größe und Postion des Textes bei 
Größenänderung automatisch mit ändern? Dann würde ich vielleicht den 
Text eher als Bild ins Label einfügen (QLabel->setPixmap()). Damit das 
Label seinen Inhalt automatisch skaliert musst Du 
setScaledContents(true) setzen.

Im ResizeEvent dein Dial müsstest Du dann in Abhängigkeit der Dial-Größe 
die Größe und Postion des Labels berechnen un setzen.

von Maxim (Gast)


Lesenswert?

Hallo und danke für die Antwort.
Ich habe versucht einen Label in der Dial reinzusetzen aber sobald ich 
die Grösse sich ändert, ist der Label nicht mehr zentriert.
Ich möchte dieses Label nicht mehr mit dem Designer reinfüfen sondern 
Codetechnik.

Die Frage ist : wie mache ich das am besten.
Ich stehe vor dieses Problem seit 2 Tage und komme nicht weiter ...

von Rolf Magnus (Gast)


Lesenswert?

An sich sollte es doch auch möglich sein, dem QwtDial ein Layout zu 
geben, wo man dann sein(e) Childwidget(s) und ein paar Spacer einfügt. 
Um das passende Verschieben kümmert sich dann das Layout.

von pks (Gast)


Lesenswert?

Rolf Magnus schrieb:
> An sich sollte es doch auch möglich sein, dem QwtDial ein Layout zu
> geben, wo man dann sein(e) Childwidget(s) und ein paar Spacer einfügt.
> Um das passende Verschieben kümmert sich dann das Layout.

Stimmt, das wäre wohl der Einfachste Weg.

@Maxim Ein kleines Beispielprojekt wäre hilfreich...

von Maxim (Gast)


Lesenswert?

Guten Morgen und danke an alle.
Mit einem kleines Beispielprojeckt klappt es.
Danke noch mal

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.