QWTDial und Label
QWTDial und Label
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
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
Der Designer bringt in dem Zusammenhang gar nichts - das musst Du in C++ machen.
Uwe
Re: QWTDial und Label
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.
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.
Zuletzt geändert von galilio am 21. November 2013 11:10, insgesamt 1-mal geändert.
Re: QWTDial und Label
Einfach den painter mit QPainter::scale() in Abhängigkeit vom Parameter radius manipulieren.
Uwe
Uwe
Re: QWTDial und Label
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
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
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
Ich bin halt neue in Welt der QT und bin sehr dankbar für jeden Tipps
Danke in voraus
Re: QWTDial und Label
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:
-->testKlasse sieht so aus:
tesklass.h
-->.cpp file
--> mylabel.h
-->MyLabel.cpp
Meine Frage ist wie kann ich das label von Mylabel in der (ui.setupUi(this)) einfügen ........?
Herzlichen Dank
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();
}
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
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()
{
}
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);
};
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