[gelöst]Connect ruft Funktion nicht auf

Alles rund um die Programmierung mit Qt
Antworten
noZmo
Beiträge: 2
Registriert: 16. August 2008 16:08

[gelöst]Connect ruft Funktion nicht auf

Beitrag von noZmo »

Tagchen

bin so langsam wirklich am verzweifeln was connect angeht...
hab jetzt etwa 3 Stunden in Foren rumgewühlt und mir diverse Tutorials angesehen, aber mir fällt einfach nicht auf was ich falsch gemacht habe.
Würd gerne auch ne etwas Detailreichere Fehlerbeschreibung abgeben, aber was anderes als "Es geht nicht" is iwie nich drin.

main.cpp

Code: Alles auswählen

#include "qapplication.h"
#include "mywindow.h"

int main(int argc,char **argv)
{
QApplication app(argc,argv);
mywindow win;
win.show();

QObject::connect(win.ImgBtn_Play, SIGNAL(clicked(bool)), &win, SLOT( b1_clicked() ));
QObject::connect(win.WebView, SIGNAL(linkClicked(const QUrl)), &app, SLOT( quit() ));

return app.exec();
}

mywindow.h
#pragma once
#include "ui_qttest.h"

class mywindow :
public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
mywindow(void);
~mywindow(void);

static void b1_clicked();
};

mywindow.cpp

Code: Alles auswählen

#include "mywindow.h"

mywindow::mywindow(void)
{
setupUi(this);
}

mywindow::~mywindow(void)
{
}

void mywindow::b1_clicked()
{
	exit(0);
}
Eigentlich sollte der ja wenn der Button geklickt wird, b1_clicked aufrufen und damit das Programm beenden. Das tuts aber nicht.
Das seltsame ist nur mit &app und quit() als SLOT hats geklappt, also werd ich wohl iwas falsch gemacht haben, aber meiner Meinung nach sieht das genauso aus, wies in den Foren als richtig dargestellt wird.

Durch das zweite connect müsste das Programm beendet werden, wenn ich auf nen Link im WebView klicke, aber hier funktioniert das nichtmal mit &app und quit()...

Hab heute das erste mal was mit Qt gemacht und bin da ziemlich ratlos...

vielen dank schomma für jeden lösungsansatz ^^


Achja, benutze VS2008, falls das irgendwie relevant sein sollte.
Zuletzt geändert von noZmo am 16. August 2008 23:04, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Slots können erstens nicht statisch sein, zweitens müssen sie für Qt als Slot gekennzeichnet werden.
Es wäre event. für dich leichter, wenn du erst das Tutorial in der Doku durcharbeiten würdest.
noZmo
Beiträge: 2
Registriert: 16. August 2008 16:08

Beitrag von noZmo »

ah, danke, jetz klappt alles, das mit den links habich auch noch hinbekomm.

falls es noch iwann mal wen interessiert:

main.cpp

Code: Alles auswählen

int main(int argc,char **argv)
{
QApplication app(argc,argv);
mywindow win;
win.show();

win.WebView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);

QObject::connect(win.ImgBtn_Play, SIGNAL(clicked(bool)), &win, SLOT( b1_clicked() ));
QObject::connect(win.WebView->page(), SIGNAL(linkClicked(const QUrl &)), &win, SLOT( link_clicked(const QUrl &) ));

return app.exec();
}
mywindow.h

Code: Alles auswählen

class mywindow :
public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
mywindow(void);
~mywindow(void);

public Q_SLOTS:
	void b1_clicked();
	void link_clicked(const QUrl &url);
};
mywindow.cpp

Code: Alles auswählen

mywindow::mywindow(void)
{
setupUi(this);
}

mywindow::~mywindow(void)
{
}

void mywindow::b1_clicked()
{
	exit(0);
}

void mywindow::link_clicked(const QUrl &url)
{
	exit(0);
}
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Außerdem wäre statt einem exit(0) ein qApp->quit() besser, da Qt dann noch die Möglichkeit hat aufzuräumen.
Antworten