Seite 1 von 1

[gelöst]Connect ruft Funktion nicht auf

Verfasst: 16. August 2008 20:14
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.

Verfasst: 16. August 2008 20:30
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.

Verfasst: 16. August 2008 23:04
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);
}

Verfasst: 17. August 2008 09:24
von upsala
Außerdem wäre statt einem exit(0) ein qApp->quit() besser, da Qt dann noch die Möglichkeit hat aufzuräumen.