Seite 1 von 1
QWTDial und Label
Verfasst: 20. November 2013 21:38
von galilio

- Qwt_Dial mit Label
- Test_dial_2.png (9.01 KiB) 7002 mal betrachtet

- QWT_Dial ohne Label
- Test_dial.png (7.56 KiB) 7002 mal betrachtet
Hallo alle zusammen,
ich versuche seit 2 Tage einen Konzept zu erarbeiten wie ich in einen QWtDial einen Label mit Text reinzuplatzieren.
Das Label in Qwt_Dial zu platzieren ist kein Problem, wenn ich kein Grid Layout angewendet habe.
Ich möchte in dem Dial einen text zb. (Km/h) schreiben und es muss so flexible sein mit der grosse des Dialogs.
Das heisst wenn die grösse der Dialog sich ändert muss auch der grosse des textes anpassen.
Mir ehrlich gesagt fehlt jede Plan wie ich das mit Qt designer realisieren kann.
Für jede Hilfe bin ich sehr dankbar.
Re: QWTDial und Label
Verfasst: 21. November 2013 07:58
von Uwe
Dein Code scheint ja ohnehin auf der Klasse SpeedoMeter aus dem dials example zu basieren. Also alles was Du machen musst ist in SpeedoMeter::drawScaleContents den Font in abhängigkeit vom Radius zu wählen ( oder besser mit einem Skalierungsfaktor zeichnen ).
Der Designer bringt in dem Zusammenhang gar nichts - das musst Du in C++ machen.
Uwe
Re: QWTDial und Label
Verfasst: 21. November 2013 08:44
von galilio
Hallo Uwe,
Danke für deine Antwort.
Ja das stimmt meine Vorhaben ist auf die Klasse Speedmotor basiert.
void CDial_Test::drawScaleContents( QPainter *painter, const QPointF ¢er, double radius ) const
{
QRectF rect( 0, 0, 2.0 * radius, 2 * radius - 10.0 );
rect.moveCenter( center );
const QColor color = palette().color( QPalette::Text );
painter->setPen( color );
const int flags = Qt::AlignBottom | Qt::AlignHCenter;
painter->drawText( rect, flags, d_label );
}
Mir ist nicht ganz klar wie ich das skalieren soll, wenn die Grosse sich ändert .
1)-Das Label ist immer in der richtige Stelle aber wenn der Dialog gross wird, ist der Text sehr klein.
2)Wie kann ich diese Änderung in meine Dialog(in der andere GUI ) übertragen?
Anbei ist eine Muster von meine Gui.
Das GUI wurde mit unterschiedliche Layout (Grid,Horizontal,Vertikal Layout ) gemacht.
Re: QWTDial und Label
Verfasst: 21. November 2013 08:49
von Uwe
Einfach den painter mit QPainter::scale() in Abhängigkeit vom Parameter radius manipulieren.
Uwe
Re: QWTDial und Label
Verfasst: 21. November 2013 11:12
von galilio
Noch einen Frage Uwe und sorry wenn es banal ist.
Wie verbinde ich denn diese ànderung in der Haupt GUI .
Genauer gefragt wie verbinde ich meine Änderung mit (ui.setupUi(this);

)
Danke und sorry
Re: QWTDial und Label
Verfasst: 22. November 2013 07:22
von galilio
Auf eine Hinweis hätte ich mich gefreut.
Ich bin halt neue in Welt der QT und bin sehr dankbar für jeden Tipps
Danke in voraus
Re: QWTDial und Label
Verfasst: 26. November 2013 12:37
von galilio
Hallo Uwe,
ich bin einfach in eine Kleinigkeit bezweifelt und komme einfach nicht weiter.
Ich will einfach anhand dieses Beispielprogramm einen virtuelle vererbung duch einen QLabel durchführen.
Meine main.cpp sieht so aus:
Code: Alles auswählen
#include "test.h"
#include <QtGui/QApplication>
#include<QVBoxLayout>
#include<QKeyEvent>
#include "MyLabel.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
test w;
w.show();
//label->show();
return a.exec();
}
-->testKlasse sieht so aus:
tesklass.h
Code: Alles auswählen
#ifndef TEST_H
#define TEST_H
#include <QtGui/QMainWindow>
#include "ui_test.h"
class MyLabel;
class test : public QMainWindow
{
Q_OBJECT
public:
test(QWidget *parent = 0, Qt::WFlags flags = 0);
~test();
private:
Ui::testClass ui;
};
#endif // TEST_H
-->.cpp file
Code: Alles auswählen
#include "test.h"
#include "mylabel.h"
#include <QVBoxLayout>
test::test(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
MyLabel myLabel("TestLabel");
//myLabel("TestLabel") = new QLabel;
QVBoxLayout *l= new QVBoxLayout;
l->addWidget(myLabel);// das ist quatsch ............
//l->addWidget(ui);*/
//myLabel->addWidget(
/*QVBoxLayout *layout;
layout = new QVBoxLayout();
layout->addWidget(myLabel);*/
}
test::~test()
{
}
--> mylabel.h
Code: Alles auswählen
#pragma once
#include <QLabel>
class MyLabel: public QLabel
{
public:
explicit MyLabel(QWidget * parent = 0, Qt::WindowFlags f = 0);
explicit MyLabel(const QString & text, QWidget * parent = 0,
Qt::WindowFlags f = 0);
~MyLabel(void);
protected:
virtual void keyPressEvent(QKeyEvent *ev);
};
-->MyLabel.cpp
Code: Alles auswählen
#include "MyLabel.h"
#include<QKeyEvent>
MyLabel::MyLabel(QWidget *parent, Qt::WindowFlags f)
: QLabel(parent, f)
{
}
MyLabel::MyLabel(const QString &text, QWidget *parent, Qt::WindowFlags f)
: QLabel(text, parent, f)
{
}
void MyLabel::keyPressEvent(QKeyEvent * event)
{
if (event->key() == Qt::Key_Delete)
clear();
else
QLabel::keyPressEvent(event);
}
MyLabel::~MyLabel(void)
{
}
Meine Frage ist wie kann ich das label von Mylabel in der (ui.setupUi(this)) einfügen ........?
Herzlichen Dank