2 Fragen (einmal QT Creator , einmal Visual Studio)

Alles zu Entwicklungsumgebungen und Editoren für Qt
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

2 Fragen (einmal QT Creator , einmal Visual Studio)

Beitrag 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]
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Event. hilft ein bisschen mehr source? Wo erstellst du die connection zwischen button und slot?
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag von pizza4ever »

Moin.

Die Erstellung zwischen Button und Source erstelle ich im QT Designer unter Signale / Slots
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag 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!
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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...
Dateianhänge
vs.png
vs.png (119.02 KiB) 11584 mal betrachtet
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Die folgende datei wäre noch interessant!

Code: Alles auswählen

#include "ui_qt_testproject.h" 
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

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

Beitrag 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.
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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...
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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 :)).
pizza4ever
Beiträge: 21
Registriert: 4. November 2010 23:17

Beitrag 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;)
Antworten