Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  Qt Hilfe     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
ghostboss
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.01.2010
Beiträge: 103
Beitrag ghostboss Mitglied 20:15:52 01.09.2010   Titel:   Qt Hilfe            Zitieren

Hallo,

hab mal ne frage zu Qt. Hab jetzt ein Programm mit Qt erstellt, TextFinder, doch da hab ich glaube ich ein Problem.

Zitat:

The on_findButton_clicked() slot is called automatically in the uic generated ui_textfinder.h file by this line of code:

QMetaObject::connectSlotsByName(TextFinder);



Was soll das heißen? Wo finde ich "ui_textfinder.h", soll ich das seber erstellen und da den Code einfügen? Hab ich mal gemacht aber dann error!
antialias
Mitglied

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 99
Beitrag antialias Mitglied 08:01:01 02.09.2010   Titel:              Zitieren

Möglicherweise hilft das weiter (frech aus einem Qt-Forum kopiert)
Zitat:
setupUi calls connectSlotsByName. connectSlotsByName parses the moc_ file in order to connect slots and signals. The moc_ file contains a list of all the slots for the class. The parser iterates over the list of slot names looking for the following pattern: on_objectName_signal, where on_objectName_signal is the name of the slot, objectName is the object name and signal is the signal. For example, if you have a slot named, on_doneButton_clicked(), the parser looks for an object named doneButton, a signal named clicked and then connects the on_doneButton_clicked() slot to QButton’s signal clicked().

If you follow this naming convention, you do not need to call the connect() method, nor do you need to connect the signal via the Qt UI editor in VisualStudio. connectSlotsByName will automatically make the connection for you.

So, in order to get rid of the “No matching signal for…” warnings, we need to either follow this naming convention, or make sure none of our slot names begin with “on_”. If you have a slot, onDoneButton_clicked, for example, connectSlotsByName will no try to connect it with a signal, nor will emit an warning.


Zuletzt bearbeitet von antialias am 08:01:20 02.09.2010, insgesamt 1-mal bearbeitet
ghostboss
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.01.2010
Beiträge: 103
Beitrag ghostboss Mitglied 17:14:02 02.09.2010   Titel:              Zitieren

Sorry hilft mit nicht ganz weiter, bitte auf Deutsch :)
ghostboss
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.01.2010
Beiträge: 103
Beitrag ghostboss Mitglied 16:18:00 05.09.2010   Titel:              Zitieren

Hallo,

hab jetzt einbisschen das QT tut durchgelesen (http://doc.trolltech.com/4.1/examples.html#qt-tutorial) und versuche ein kleines Programm zu schreiben.

Das Programm hat ein: Button, LineEdit und TextEdit, und soll den Text von LineEidt nach TextEdit schreiben wenn man auf den Button klickt.

Ich verstehe noch nicht wie ich das mit dem connect verbinden soll. In WinForms (C++/CLI) ist das so das man da ein Event hat (z.B. Click-Event) und in der Event-Funktion kann man dann auf Objekte zugreifen, wie geht das in QT?

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <QApplication>
#include
<QWidget>
#include
<QVBoxLayout>
#include
<QPushButton>
#include
<QLineEdit>
#include
<QTextEdit>


#include
<string>

class MyWidget : public QWidget{

public:
    MyWidget(QWidget *parent = 0);

};

MyWidget::MyWidget(QWidget *parent) : QWidget(parent){
    QLineEdit *lineEdit = new QLineEdit;
    QPushButton *button = new QPushButton(tr("OK"));
    QTextEdit *textEdit = new QTextEdit;


    //connect(button, SIGNAL(clicked()) , ???, SLOT(???));

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(lineEdit);
    layout->addWidget(button);
    layout->addWidget(textEdit);
    setLayout(layout);
}



int main(int argc, char *argv[]){
    QApplication app(argc, argv);

    MyWidget window;

    window.show();

    return app.exec();
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <QApplication>
#include
<QWidget>
#include
<QVBoxLayout>
#include
<QPushButton>
#include
<QLineEdit>
#include
<QTextEdit>


#include
<string>

class MyWidget : public QWidget{

public:
MyWidget(QWidget *parent = 0);

};

MyWidget::MyWidget(QWidget *parent) : QWidget(parent){
QLineEdit *lineEdit = new QLineEdit;
QPushButton *button = new QPushButton(tr("OK"));
QTextEdit *textEdit = new QTextEdit;


//connect(button, SIGNAL(clicked()) , ???, SLOT(???));

QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit);
layout->addWidget(button);
layout->addWidget(textEdit);
setLayout(layout);
}



int main(int argc, char *argv[]){
QApplication app(argc, argv);

MyWidget window;

window.show();

return app.exec();
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <QApplication>
#include
<QWidget>
#include
<QVBoxLayout>
#include
<QPushButton>
#include
<QLineEdit>
#include
<QTextEdit>


#include
<string>

class MyWidget : public QWidget{

public:
    MyWidget(QWidget *parent = 0);

};

MyWidget::MyWidget(QWidget *parent) : QWidget(parent){
    QLineEdit *lineEdit = new QLineEdit;
    QPushButton *button = new QPushButton(tr("OK"));
    QTextEdit *textEdit = new QTextEdit;


    //connect(button, SIGNAL(clicked()) , ???, SLOT(???));

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(lineEdit);
    layout->addWidget(button);
    layout->addWidget(textEdit);
    setLayout(layout);
}



int main(int argc, char *argv[]){
    QApplication app(argc, argv);

    MyWidget window;

    window.show();

    return app.exec();
}
learnenglish
Unregistrierter




Beitrag learnenglish Unregistrierter 16:25:44 05.09.2010   Titel:              Zitieren

Ohne Englisch kannst du das Programmieren auch gleich sein lassen, alle interessanten Sachen, nach den Grundlagen, werden nur in Englisch vermittelt. Also entweder Englisch lernen oder ein Noob bleiben, du hast du Wahl.
ghostboss
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.01.2010
Beiträge: 103
Beitrag ghostboss Mitglied 16:53:17 05.09.2010   Titel:              Zitieren

Das Tutorial ist auf "Englisch". Ich weiß nur nicht wie man mit Hilfe eines Buttons und connect den Text von LienEdit nach TextEdit einfügt. Bisher sah ich nur wie man zwei Objekte mit connect verbindet!
l'abra d'or
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.12.2009
Beiträge: 1201
Beitrag l'abra d'or Mitglied 18:25:53 05.09.2010   Titel:              Zitieren

ghostboss schrieb:
Bisher sah ich nur wie man zwei Objekte mit connect verbindet!

Anders geht es doch auch hier nicht! Schreib dir einen SLOT, in dem du den Text des LineEdit im TextEdit einfügt, connecte das clicked()-SIGNAL des Buttons auf diesen SLOT und fertig.
ghostboss
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.01.2010
Beiträge: 103
Beitrag ghostboss Mitglied 19:16:46 05.09.2010   Titel:              Zitieren

Hab das jetzt so gemacht aber da stimmt wohl was nicht:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <QApplication>
#include
<QWidget>
#include
<QVBoxLayout>
#include
<QPushButton>
#include
<QLineEdit>
#include
<QTextEdit>


class MyWidget : public QWidget{

    QLineEdit *lineEdit;
    QPushButton *button;
    QTextEdit *textEdit;

private slots:
    void SetText();

public:
    MyWidget(QWidget *parent = 0);

};

MyWidget::MyWidget(QWidget *parent) : QWidget(parent){
    lineEdit = new QLineEdit;
    button = new QPushButton(tr("OK"));
    textEdit = new QTextEdit;

    connect(button, SIGNAL(clicked()), this, SLOT(SetText()));


    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(lineEdit);
    layout->addWidget(button);
    layout->addWidget(textEdit);
    setLayout(layout);
}

void MyWidget::SetText(){
    //lineEdit->setText("hallo");
    close();
}


int main(int argc, char *argv[]){
    QApplication app(argc, argv);

    MyWidget window;

    window.show();

    return app.exec();
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <QApplication>
#include
<QWidget>
#include
<QVBoxLayout>
#include
<QPushButton>
#include
<QLineEdit>
#include
<QTextEdit>


class MyWidget : public QWidget{

QLineEdit *lineEdit;
QPushButton *button;
QTextEdit *textEdit;

private slots:
void SetText();

public:
MyWidget(QWidget *parent = 0);

};

MyWidget::MyWidget(QWidget *parent) : QWidget(parent){
lineEdit = new QLineEdit;
button = new QPushButton(tr("OK"));
textEdit = new QTextEdit;

connect(button, SIGNAL(clicked()), this, SLOT(SetText()));


QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit);
layout->addWidget(button);
layout->addWidget(textEdit);
setLayout(layout);
}

void MyWidget::SetText(){
//lineEdit->setText("hallo");
close();
}


int main(int argc, char *argv[]){
QApplication app(argc, argv);

MyWidget window;

window.show();

return app.exec();
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <QApplication>
#include
<QWidget>
#include
<QVBoxLayout>
#include
<QPushButton>
#include
<QLineEdit>
#include
<QTextEdit>


class MyWidget : public QWidget{

    QLineEdit *lineEdit;
    QPushButton *button;
    QTextEdit *textEdit;

private slots:
    void SetText();

public:
    MyWidget(QWidget *parent = 0);

};

MyWidget::MyWidget(QWidget *parent) : QWidget(parent){
    lineEdit = new QLineEdit;
    button = new QPushButton(tr("OK"));
    textEdit = new QTextEdit;

    connect(button, SIGNAL(clicked()), this, SLOT(SetText()));


    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(lineEdit);
    layout->addWidget(button);
    layout->addWidget(textEdit);
    setLayout(layout);
}

void MyWidget::SetText(){
    //lineEdit->setText("hallo");
    close();
}


int main(int argc, char *argv[]){
    QApplication app(argc, argv);

    MyWidget window;

    window.show();

    return app.exec();
}


nach dem Klick soll die Anwendung geschlosen werden, aber die schliesst nicht?!
l'abra d'or
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.12.2009
Beiträge: 1201
Beitrag l'abra d'or Mitglied 19:30:01 05.09.2010   Titel:              Zitieren

Man startet in so einem Falle die Anwendung in einer Konsole (oder schaut, ob in der verwendeten IDE im Anwendungs-Ausgabe-Fenster etwas steht). Du bekommst garantiert eine Meldung dass mit dem connect etwas nicht geht. DENN: deiner Klasse fehlt das Q_OBJECT-Macro! Wenn du das einfügst, bekommst du einen weiteren Fehler wg. undefined references. Dann brauchst du nämlich noch den moc.
Tu dir einen Gefallen und arbeite erstmal das Tutorial ganz durch (nicht nur Teil 1), bevor du selber was rumbastelst. Dann weißt du genauer wegen wo, wann was und warum.
sascha_kib
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2006
Beiträge: 77
Beitrag sascha_kib Mitglied 22:49:38 05.09.2010   Titel:              Zitieren

learnenglish schrieb:
Ohne Englisch kannst du das Programmieren auch gleich sein lassen, alle interessanten Sachen, nach den Grundlagen, werden nur in Englisch vermittelt. Also entweder Englisch lernen oder ein Noob bleiben, du hast du Wahl.


Das ist erstens mal wieder eine sehr hilfreiche Antwort und zweitens muss ich dem auch gleich mal widersprechen: es gibt Programmiersprachen (z.B. C#) bei denen man auch gänzlich ohne Englischkenntnisse sehr weit kommt! In vielen Sprachen sind sehr gute Bücher verfügbar, bzw. wenn wir beim Beispiel .NET-Framework bleiben, auch eine ausgezeichnete (deutsche!) Dokumenatation!

Die Dokumentation für Qt ist meiner Meinung nach hervorragend, aber halt nunmal komplett in englischer Sprache verfasst. Wer keine Englischkenntnisse hat kommt mit Hilfe von kostenlosen Tutorials meist nicht weiter, da hilft letztendes wirklich nur ein gutes Buch!

Sorry für OT :rolleyes:

_________________
http://www.holdefehr.de
C/C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  Qt Hilfe   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.