• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Problem bei QObject::connect und eigenen slots

D.Cent

Member
Tag,

Habe heute meine erste Qt4-Applikation erstellt.
Sie besteht aus 2 PushButtons und einem LineEdit.

Der erste PushButton funktioniert; ich habe ihm die Funktion "close()" zugewiesen (wie man unten sieht).

Der 2te will jedoch nicht; fehlermeldung:
Code:
Object::connect: No such slot QWidget::progstart(4)
Object::connect:  (sender name:   'pb_ts')
Object::connect:  (receiver name: 'QWidget')

Was er schreibt, erscheint mir zwar logisch, dennoch haben auch viele andere Sachen nicht funktioniert beim dritten Argument der Funktion connect().

Hier nun der Source:

main.cpp
Code:
#include <QApplication>

#include "qd321go.h"

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	QWidget *form = new QWidget();
	qd321go mainWidget;

	mainWidget.setupUi(form);

	form->show();
	return app.exec();
}

qd321go.h:
Code:
#ifndef QD321GO_H
#define QD321GO_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>

class qd321go : public QObject
{
	public:
		QLineEdit *le_directip;
		QPushButton *pb_ts;
		QPushButton *pb_quit;

		void setupUi(QWidget *QWidget)	
		{
			if (QWidget->objectName().isEmpty())
				QWidget->setObjectName(QString::fromUtf8("QWidget"));

			QWidget->resize(400, 300);
			le_directip = new QLineEdit(QWidget);
			le_directip->setObjectName(QString::fromUtf8("le_directip"));
			le_directip->setGeometry(QRect(20, 60, 113, 21));
			pb_ts = new QPushButton(QWidget);
			pb_ts->setObjectName(QString::fromUtf8("pb_ts"));
			pb_ts->setGeometry(QRect(170, 60, 75, 25));
			pb_quit = new QPushButton(QWidget);
			pb_quit->setObjectName(QString::fromUtf8("pb_quit"));
			pb_quit->setGeometry(QRect(270, 60, 75, 25));

			retranslateUi(QWidget);
			QObject::connect(pb_quit, SIGNAL(clicked()), QWidget, SLOT(close()));
			QObject::connect(pb_ts, SIGNAL(clicked()), QWidget, SLOT(progstart(4))); 

			QMetaObject::connectSlotsByName(QWidget);
		} // setupUi

		void retranslateUi(QWidget *QWidget)
		{
			QWidget->setWindowTitle(QApplication::translate("Widget", "QD321GO!! - Linux build", 0, QApplication::UnicodeUTF8));
			pb_ts->setText(QApplication::translate("Widget", "TeamSpeak", 0, QApplication::UnicodeUTF8));
			pb_quit->setText(QApplication::translate("Widget", "Quit", 0, QApplication::UnicodeUTF8));
			Q_UNUSED(QWidget);
		} // retranslateUi
		
		int progstart(int program) {
			puts("LOL");
			//TODO
		}
};

namespace Ui {
	class Widget: public qd321go {};
} // namespace Ui

#endif // QD321GO_H

Bitte helft mir!!
 
Oben