Seite 1 von 2

2 Fragen (einmal QT Creator , einmal Visual Studio)

Verfasst: 10. November 2010 12:31
von pizza4ever
Guten Tag,

ich habe zwei Fragen... wohl relativ leicht

a.) Wenn ich im QT Creator arbeite, funktoneirt alles soweit ganz gut, außer dass er meine Breakpoins einfach ignoriert!? Woran liegt das? Er beachtet sie komplett nicht, obwol sie aktiviert sind (DEBUG Modus).

b.) Wohl eine sau einfache Frage: Wie fange ich im Visual Studio (2008) an? Ich habe die Arbeitsumgebung soweit aufgesetzt, im Designer kann ich dann auch mir ein para Buttons angelegt, die werden nach dem Kompilieren auch angezeigt, alles TOP, aber wenn ich nun eins meiner Signals mit Funktion belegen will, habe ich verscuht das aus dem QT Creator zu adaptieren indem ich in der headerdatei (heißt hier qt_testproject.h) einen

Code: Alles auswählen

public slots:
void ButtonClicked();
angelegt habe. Wenn ich nun allerdings in der qt_testproject.cpp versuche arauf zuzugreifen mit:

Code: Alles auswählen

QT_Testproject::ButtonClicked()
{

	

}


funktioniert es nicht - wieso?

DANKE[/code]

Verfasst: 10. November 2010 13:26
von Mani99
Event. hilft ein bisschen mehr source? Wo erstellst du die connection zwischen button und slot?

Verfasst: 10. November 2010 13:31
von pizza4ever
Moin.

Die Erstellung zwischen Button und Source erstelle ich im QT Designer unter Signale / Slots

Verfasst: 10. November 2010 13:38
von Mani99
Welche files werden unter visual studio noch erstellt?
Wo wird connect(sender, signal, ...) aufgerufen?
Wenn du etwas mehr source posten würdest, dann müsste man nicht raten!

Verfasst: 10. November 2010 13:54
von pizza4ever
Hab mal ne Übersicht aus VS rangehängt...

die .h Datei sieht so aus:
#ifndef QT_TESTPROJECT_H
#define QT_TESTPROJECT_H

#include <QtGui/QMainWindow>
#include "ui_qt_testproject.h"

class QT_Testproject : public QMainWindow
{
Q_OBJECT

public:
QT_Testproject(QWidget *parent = 0, Qt::WFlags flags = 0);
~QT_Testproject();

public slots:
void ButtonClicked();

private:
Ui::QT_TestprojectClass ui;
};



#endif // QT_TESTPROJECT_H
main.cpp

Code: Alles auswählen

#include "qt_testproject.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QT_Testproject w;
	w.show();
	return a.exec();
}
qt_testproject.cpp

Code: Alles auswählen

#include "qt_testproject.h"

QT_Testproject::QT_Testproject(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);
}

QT_Testproject::~QT_Testproject()
{

}

QT_Testproject::ButtonClicked()
{

	

}

Wo connect aufgerufen wird weiß ich nicht, hab mal im Creator geschaut und da nix ädaquates gefunden, leider...

Hab mich halt durch Tutorials gehangelt und nun mit VS angefangen, leider bisher wie gesagt erfolglos...

Danke, und falls noch was fehlt bitte Bescheid sagen...

Verfasst: 10. November 2010 14:05
von Mani99
Die folgende datei wäre noch interessant!

Code: Alles auswählen

#include "ui_qt_testproject.h" 

Re: 2 Fragen (einmal QT Creator , einmal Visual Studio)

Verfasst: 10. November 2010 14:10
von franzf
pizza4ever hat geschrieben:Wenn ich nun allerdings in der qt_testproject.cpp versuche arauf zuzugreifen mit:

Code: Alles auswählen

QT_Testproject::ButtonClicked()
{
}


funktioniert es nicht - wieso?
1) Das ist kein "Zugriff" sondern nur eine Methodendefinition
2) "funktioniert nicht" ist keine ausreichende Beschreibung/Meldung. Der Screenshot (mal wieder... argh) sagt jetzt, dass es ein Compiler-Error ist. Der kommt daher, dass FUnktionen immer einen Return-Typ angeben müssen - der fehlt bei deiner Definition, deshalb die Meldung mit §default-int" usw.

Verfasst: 10. November 2010 14:33
von pizza4ever
upsala... sorry stimmt, funktioniert jetzt, zumindestens startet das programm nun einwandfrei...

DANKE

Eine Frage habsch noch, dann wäre VS mit QT wohl perfekt für mich..

und zwar im creator bekomm ich immer vorschläge wenn ich anfange zu tippen z.B. ich gebe ein:

MainWindow::But und er schlägt mir als ergänzung: tonClicked (so dass es insgesamt ButtonClicked heißt, er schlägt mir halt sämtliche Möglichkeiten vor) vor, das ist wirklcih sehr sehr hilfreich... bei VS bisher noch nicht; weiß jemand ob / wo man das einrichten kann...

Nochmal danke für diesen Schusselfehler ;)

edit: hab grad das hier gefunden:

http://blog.xeviox.com/wordpress/?p=155

werds später mal ausprobieren...

Verfasst: 11. November 2010 09:46
von pizza4ever
hmm hab doch nochmal ne frage :-(

weil wenn ich nun - so wie ich es in einem QT Tutorial gelernt habe, ein Textlabel seten will mit

Code: Alles auswählen

ui->label->setText("Fehler");
sagt mir der Compiler:
Fehler, weil links ne klasse ist..

Es funktioniert dann nur wenn ich schreibe:
ui.label->setText("Fehler");
Kann mir das jemand erklären? Für nen Anfänger alles zZ noch recht schwer ;-(

edit: Visual Studio 2008...

Verfasst: 11. November 2010 10:47
von franzf
Bitte tu dir und uns den Gefallen und lern erst C++. Qt verlangt ein gutes Verständnis mindestens der Grundlagen! Du scheinst den Unterschied zwischen Value- und Zeigertyp nicht zu kennen.

Verfasst: 11. November 2010 11:07
von pizza4ever
Naja, denn kenn ich schon...

Wieso ich aber im Creator über den Zeiger zugreife und in VS direkt, erklärt es nicht...

Wie gesagt, der obere Code läuft ja im Creator, nur nich im Visual Studio... DAFÜR hätte ich gerne ne erklärung, keine Codeerklärung

Man arbeitet sich halt ein und da ist man am Anfang halt öfters mal aufgeschmissen...

Verfasst: 11. November 2010 11:22
von franzf
pizza4ever hat geschrieben:Wie gesagt, der obere Code läuft ja im Creator, nur nich im Visual Studio... DAFÜR hätte ich gerne ne erklärung, keine Codeerklärung
Dann schau bitte nach, wenn der VS2008 ein (halbwegs...) standardkonformer C++-Compiler ist, wird der bei gleichem Code ein (aus Fehlersicht) gleiches Ergebnis liefern. Qt muss sich als C++-Framework an die Regeln halten, die der C++-Standard stellt.

Darum: Schau dir den Code nochmal genau an, ich bin mir sicher du hast im Code einen Unterschied betreffend Deklaration deines ui-Members.

Verfasst: 11. November 2010 22:34
von pizza4ever
Naja, ich hab mich in beiden Malen durch die Projekt Erstellen Assistente geklickt und dann drauf losgeklimert...

Hattest aber recht, der QT Creator Assistent definiert es als Zeiger

Code: Alles auswählen

private:
	Ui::TestProject_QTClass *ui;
und VS Assistent als
private:
Ui::TestProject_QTClass ui;

Allerdings Crasht der Code sobald ich versuche im VS es als Zeiger zu definieren... Bin wie gesagt noch komplett Fresch in QT da stellen sich halt 100 ANfängerfragen...

Verfasst: 12. November 2010 08:01
von franzf
pizza4ever hat geschrieben:Allerdings Crasht der Code sobald ich versuche im VS es als Zeiger zu definieren...
Wieder der Hinweis auf C++: Zeiger müssen auf etwas zeigen, in deinem Falle musst du deinen Member dynamisch mit new initialisieren, sonst gibts nen SegFault (der Codekann nicht crashen, das Programm stürzt ab und zwar mit einer bestimmten Meldung, die du bitte in Zukunft mitpostest, danke :)).

Verfasst: 12. November 2010 14:47
von pizza4ever
Es gab nen Speicherfehler, daher hatte ich ihn nicht gepostet...

Whatever.. Ich arbeite mich grad mal durchs QT4.6 Buch von Galileo Computing durch weil ich wohl mit Trial and Error grad net weiterkomme;)