Hallo Forenmitglieder,
dies ist hier mein erster Beitrag.
Ich bin Anfänger im Programmieren mit QT.
Bisher habe ich in C hauptsächlich Mikrocontroller und ein wenig unter Linux
programiert.
Jetzt benötige ich allerdings eine grafische Anwendung für mein privates Projekt.
Dabei bin ich auf einige Probleme gestoßen.
Zur Verfügung habe ich folgende QT Bücher:
- Das QT Buch (QT3.2)
- GUI Programmierung mit QT3
Allerdings sind zwischen QT3 und QT4 solche Unterschiede,so daß ich mit den
Büchern nur bedingt was anfangen kann.
Daher lese ich hauptsächlich Infos in Foren und Quellen.
Das ist schon meine erste Frage.
Warum gibt es solche großen Unterschiede zwischen QT3 und QT4 ?
(jedenfalls bei den ganzen Widget)
Dasweitern habe ich ein Problem mit einem kleinen Testprogramm.
Ich möchte beim Anklicken einer Schaltfläche ein C Programm
ausführen. Kompilieren läßt es sich, beim Aufruf erhalte ich jedoch den
Hinweis "Object::connect: No such slot QMainWindow::senden()"
Ich denke mal, ich bekomme keinen Zugriff auf meine Methode
Vielleicht wäre jemand mal so freundlich, und würde drüberschauen.
main.cpp
------------------------
#include "test.h"
#include <QDesktopWidget>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Test window;
window.setWindowTitle("Test");
window.setGeometry(10, 10, 1024, 768);
window.show();
return app.exec();
}
---------------------
test.cpp
--------------------
#include "test.h"
#include <QMenu>
#include <QMenuBar>
#include <QApplication>
#include <QMessageBox>
#include <iostream>
Test::Test(QWidget *parent)
: QMainWindow(parent)
{
// Schaltflächen erzeugen
QPushButton *ende = new QPushButton("Ende", this);
ende->setGeometry(50, 40, 90, 30);
QPushButton *start = new QPushButton("Start", this);
start->setGeometry(200, 40, 90, 30);
connect(ende, SIGNAL(pressed()), qApp, SLOT(quit()));
connect(start, SIGNAL(pressed()), this, SLOT(senden()));
}
void Test::senden(bool iftoogled)
{
if (iftoogled)
{
// irgendein Code
}
}
---------
test.h
---------
#ifndef TEST_H
#define TEST_H
#include <QMainWindow>
#include <QPushButton>
#include <QRadioButton>
#include <QLabel>
#include <QVBoxLayout>
class Test : public QMainWindow
{
public:
Test(QWidget *parent = 0);
//QPushButton *taste;
QLabel* label;
QVBoxLayout* layout;
public slots:
void senden(bool status);
};
#endif
---------------
Kann man das so programmieren, oder gibt es eine bessere Lösung für
die Aufgabenstellung ??
Desweiteren ist mir aufgefallen, daß einige Programmierer in den .h Dateinen
innerhalb der Klasse keine Variablen u.s.w. deklarieren, sondern das alles
im Konstruktor machen.
Ist das eine gute Lösung, oder soolte man das ncit machen ?
Vielen Dank für Eure Hilfe
Bang Johansen
QPushButton mit Signal verbinden und andere Fragen
-
Bang-Johansen
- Beiträge: 43
- Registriert: 11. Juli 2011 22:51
QPushButton mit Signal verbinden und andere Fragen
- Dateianhänge
-
- main.cpp
- (275 Bytes) 148-mal heruntergeladen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
1. Qt3 solltest Du gleich vergessen und mit Qt4 anfangen. Qt5 steht schon vor der Tür...
2. Q_OBJECT im Header vergessen --> http://doc.qt.nokia.com/4.7/qobject.html#Q_OBJECT
2. Q_OBJECT im Header vergessen --> http://doc.qt.nokia.com/4.7/qobject.html#Q_OBJECT
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Hallo!
uii.. so viele Fragen
Folge besser den Beispielen und Tutorials der Online-Doku:
http://doc.trolltech.com/4.7/tutorials.html
Recht gut finde ich übrigens das aufbauende Tutorial von Qt4.3:
http://doc.qt.nokia.com/4.3/tutorial.html
http://doc.qt.nokia.com/latest/signalsa ... ll-example
beschrieben...
hth!
uii.. so viele Fragen
Vergiss die Qt3-Bücher..Allerdings sind zwischen QT3 und QT4 solche Unterschiede,so daß ich mit den
Büchern nur bedingt was anfangen kann.
Daher lese ich hauptsächlich Infos in Foren und Quellen.
Folge besser den Beispielen und Tutorials der Online-Doku:
http://doc.trolltech.com/4.7/tutorials.html
Recht gut finde ich übrigens das aufbauende Tutorial von Qt4.3:
http://doc.qt.nokia.com/4.3/tutorial.html
Erwartest du da ernsthaft eine Antwort...? Wäre es denn nicht schade, wenn sich die Informatik nicht weiterentwickeln würde...? :winkWarum gibt es solche großen Unterschiede zwischen QT3 und QT4 ?
(jedenfalls bei den ganzen Widget)
Du hast ein typischer Anfängerfehler drin.. Die Lösung wird gleich unterKompilieren läßt es sich, beim Aufruf erhalte ich jedoch den
Hinweis "Object::connect: No such slot QMainWindow::senden()"
Ich denke mal, ich bekomme keinen Zugriff auf meine Methode
http://doc.qt.nokia.com/latest/signalsa ... ll-example
beschrieben...
Ich bin mir nicht sicher, was genau du meinst, denn im CTor werden keine Variabeln deklariert, sondern nur initialisiert. Ein C++-Kurs an dieser Stelle ist natürlich nicht möglich... ich würde allenfalls empfehlen, dich mal noch speziell mit C++ und OOP zu beschäftigen...Desweiteren ist mir aufgefallen, daß einige Programmierer in den .h Dateinen
innerhalb der Klasse keine Variablen u.s.w. deklarieren, sondern das alles
im Konstruktor machen.
Ist das eine gute Lösung, oder soolte man das ncit machen ?
hth!
-
Bang-Johansen
- Beiträge: 43
- Registriert: 11. Juli 2011 22:51
Hallo,
danke für Eure Antworten.
Dann kann ich ja meine QT3 Bücher vergessen.
Ich werde mich erstmal durch Eure Links durcharbeiten.
Ich war eben etwas "verwundert" das zwischen den Versione solche
Unterschiede bestehen.
Mit C++ hatte ich bisher nicht viel zu tun.Meine C++ Bücher vermittel zwar C++,
aber in Verbindung mit QT sind doch einige Fragen offen.
Bang-Johansen
danke für Eure Antworten.
Dann kann ich ja meine QT3 Bücher vergessen.
Ich werde mich erstmal durch Eure Links durcharbeiten.
Ich war eben etwas "verwundert" das zwischen den Versione solche
Unterschiede bestehen.
Mit C++ hatte ich bisher nicht viel zu tun.Meine C++ Bücher vermittel zwar C++,
aber in Verbindung mit QT sind doch einige Fragen offen.
Bang-Johansen