Fader value in QLineEdit anzeigen

Alles rund um die Programmierung mit Qt
Antworten
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Fader value in QLineEdit anzeigen

Beitrag von Ozzy »

Hi,

ich bin absoluter qt-Neuling, und stehe vor einem Problem: und zwar würde ich gerne den Wert eines Faders in einem QLineEdit-Feld anzeigen lassen. Ich habe hier schon etwas im Forum gefunden, aber ich bekomme es einfach nicht hin:

Code: Alles auswählen

#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlineedit.h>

#include <qvbox.h>

class MyWidget : public QVBox
{
public:
    MyWidget( QWidget *parent=0, const char *name=0 );

public slots:
	void changeValueSlot(int value);

	QLineEdit *line;
};


MyWidget::MyWidget( QWidget *parent, const char *name )
        : QVBox( parent, name ) {

    QSlider * slider = new QSlider( Horizontal, this, "slider" );
    slider->setRange( 0, 99 );
    slider->setValue( 0 );

	line = new QLineEdit(this);
	QPushButton *quit = new QPushButton( "Quit", this, "quit" );

	qWarning("Hello");

	QObject::connect( slider, SIGNAL(valueChanged(int)), line, SLOT(changeValueSlot(int) ) ); 
    connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );
}

void MyWidget::changeValueSlot(int value) {
	line->setText(QString::number(value));
} 

int main( int argc, char **argv ) {
    QApplication a( argc, argv );

    MyWidget w;
    a.setMainWidget( &w );
    w.show();
    return a.exec();
}
Doch wenn ich das nun ausführen möchte, klappt es nicht. Unten in der Konsole steht dann immer:
QObject::connect: No such slot QLineEdit::changeValueSlot(int)
QObject::connect: (sender name: 'slider')
QObject::connect: (receiver name: 'unnamend')

Wisst Ihr, wie ich das hinbekommen kann?

MfG, und vielen Dank schon einmal, Ozzy
shaka
Beiträge: 27
Registriert: 8. November 2006 10:36
Wohnort: München

Falscher Slot

Beitrag von shaka »

Dein Slot gehört zu MyWidget, deshalb mußt Du auch damit connecten, nicht mit der QLineEdit-Instanz. Versuch mal:

connect( slider, SIGNAL(valueChanged(int)), this, SLOT(changeValueSlot(int) ) );
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Hi,

wenn ich "this" benutze, sagt er mir:

No such slot QVBox::changeValueSlot(int)


Hast Du dafür vielleicht auch noch eine Idee???

MfG, Ozzy
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Sagt Dir MOC etwas?
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Nein...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Warum fangen die Leute einfach mit Programmieren an ohne sich auch nur die Grundlagen durchgelesen zu haben? Man kann auch nicht Auto fahren bevor man sich schlau gemacht hat wie es geht... :(

Arbeite bitte das Qt-Tutorial durch. Dort ist alles gut beschrieben!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Hi,

das hatte ich mir durchgelesen.
Mein Problem ist, dass ich nicht weiß, ich wie die Ebene richtig referenziere... "this" ist es nicht, weil es dann auf QVBox zeigt. Ich weiß einfach nicht, wie ich auf die Klasse MyWidget zeige, und das habe ich nicht in der Anleitung gefunden...

MfG, Ozzy
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich würde sagen dann lies Dir das nochmal genauer durch... :(

Ggf. auch das falls Du es noch nicht gefunden hast!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Sorry, aber ich verstehe das echt nicht!
Wenn ich das Q_OBJECT hinzufüge, bekomme ich nun die Fehlermeldung:
undefined reference to 'vtable for MyWidget'

Bitte hilf mir noch einmal, ich stehe echt auf dem Schlauch!!!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Na endlich... und jetzt bitte die Forum-Suche noch nutzen lernen, dann hätte sich das auch hne Fragen erledigt.

qmake muss nochmal ausgeführt werden damit die moc-Aufrufe erzeugt werden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Also ich habe jetzt die Suche mehr als benutzt. Habe KDevelop neu installiert (3.5). Unter C++ Support -> Qt Options ist Qt eingetragen, und wenn ich im QMake Manager ein "Rebuild Project" mache, dann kommt der Fehler trotzdem wieder, entgegen der Einträge hier im Forum...

Hast Du da vielleicht noch eine Idee?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was für ein Fehler?
ist die Headerdatei auch im pro-File unter HEADERS eingetragen?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Hi,

also bisher hat das Projekt gar keine Header; die habe ich mir gespart, da die Datei (wie man sieht) noch so klein ist...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Und Du willst mir wirklich erzählen das Du das Tutorial durchgearbeitet hast? :roll:

Eine Klassendefinition muss in den Header, vor allem wenn Q_OBJECT drin vorkommt (es geht auch anders, aber das gehört nicht hier her). Sonst wird das nichts mit moc
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Jo,

vielen, vielen Dank; jetzt klappt es auch bei mir!!! Ich hatte vorher schon eine Header erzeugt, aber das funktionierte nicht, da ich leider vergessen hatte, die richtige Header zu includen... Das stand nämlich noch in de C-Datei.

Blind vom Programmieren...

Trotzdem vielen, vielen Dank, Ozzy
Antworten