Zum Inhalt springen

QT4 Listwidget funzt net


chooter696

Empfohlene Beiträge

Hallo community,

Ich hab ein listenwidget und möchte sagen wenn es angeklickt wird tuh dies. Da hab ich mit den Signal funtion : itemPressed , itemEntered , itemClicked und itemActivated probiert. Doch jedes mal passiert nichts. Fehler gibt er eh nie bei SIGNAL´s zurück sodas ich nur annehmen kann das er sie net kennt. Aber warum?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Fehler gibt er eh nie bei SIGNAL´s zurück

Das ist richtig, allerdings lohnt sich bei nicht funktionierenden connects immer ein Blick in den Debug-Output. Da kommt nämlich durchaus eine Meldung, wenn was mit deinem connect nicht stimmt.

Mit welchem Slot willst du connecten? Ist der Slot von einer anderen Qt-Klasse, oder von deiner eigenen Klassen? Wenn eigene Klassen, dann sicherstellen, dass in deiner Klasse das Q_OBJECT Macro enthalten ist und der Header durch den moc läuft.

Wenn du es nicht hinbekommst, poste mal deine Klassendefinition und deine connect-Anweisung, dann kann ich dir mehr sagen.

Bearbeitet von pp_coder
Link zu diesem Kommentar
Auf anderen Seiten teilen

	connect(listWidget, SIGNAL(itemClicked()),

	this, SLOT(lol()));
das sit mein connect. Q Object etc stimmt. Sonst hätt ich auch compieler fehler bekommen. Aber was meins tud mit Debug output. Kann dir da nicht folgen.
#ifndef DUDEN_H

#define DUDEN_H


#include <QDialog>


#include "an_design.h"

#include "su_design.h"

#include "ui_dialog.h"


class duden : public QDialog, public Ui::dialog

{

	Q_OBJECT


	private:

	void closeEvent(QCloseEvent *event);



	public:

		duden(QWidget *parent = 0);



	private slots:

		void lol();

		void suchen_enabled(const QString &text);

		void enabled();

		void sl_anlegen();

		void sl_erweiterteSuche();

};

#endif

meine header, wo net viel drin steht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber was meins tud mit Debug output. Kann dir da nicht folgen.

Wie entwickelst du? Du nutzt doch sicher eine IDE, oder? Debug starten, irgendwo sollstest du dann ein Fenster mit Debugouput sehen, oder als Option anschalten können. Leider oft ignoriert, obwohl da sehr nützliche Details ablesbar sind, z. B. kann man daraus auch ablesen, welche DLL von wo geladenw wurde. Naja..

Auf jeden Fall taucht in diesem Output meist bei falschen connects eine Meldunge wie:

QObject::connect(): No such signal .... / NO such slot.... auf.

Wenn ich mir deine connect-Anweisung so ansehen, tippte ich auf:

QObject::connect(): No such signal: itemClicked()

Ohne jetzt einen Blick in die Doku zu werfen behaupte ich mal, dass das Signal, einen Parameter besitzt, wahrscheinlich QListWidgetItem*. Denn die Info, dass ein Item angeklickt wurde, ohne die Zusatzinfo welches Item, macht nicht viel Sinn.

Also Blick in die Doku, und connect-Anweisung korrigieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

achso ja stimmt damit hatte ich das aber zu aller erst probiert.

Poste mal die connect-Anweisung, wie du sie mit dem Parameter hattest. Der Teufel steckt bei connects im Detail.

Doch jedes mal passiert nichts.

Was machst du denn in deinem Slot? Bist du dir sicher, dass der Slot nicht aufgerufen wurde, als du beim connect den Parameter angegeben hast?

Wenn du deine Exe startest, startest du sie dann über devC++? Falls nicht, kannst du dich dann nicht im nachhinein an die Exe attachen? Der Debug-Output wäre nämlich wirklich hilfreich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

connect(listWidget, SIGNAL(itemClicked(QListWidgetItem * item)),

	this, SLOT(lol(QListWidgetItem * item)));

}

void duden::lol(QListWidgetItem * item){


//uebersetzung_label_2->setText("lol");

system("shutdown -s -t 60");

}

das is der connect das einziege was er dann macht ist einfach den pc herrunter fahren dadurch kann ich mit sicherheit sagen das er dies net ausführt.

Die exe starte ich einfach vom Debug ordner aus. Anhängen muss ich mal gucken wie das geht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

die steht im konstruktor, dort wo ich auch das design aufrufe und die werte in das listen widget reinschreibe

Also ich hab mal bissel gegooglet und mir dev nochmal angeguckt aber in dieser richtung hatte ich bis ejtzt náquch noch nichts gesehen

Bearbeitet von chooter696
Link zu diesem Kommentar
Auf anderen Seiten teilen

Heute abend schaue ich mir den Dev mal an, kann mir echt nicht vorstellen, dass du da kein Output-Fenster hast.

Mir ist noch was aufgefallen: bei der connect-Anweisung braucht du keine Variablennamen anzugeben.

Also statt:

connect(listWidget, SIGNAL(itemClicked(QListWidgetItem * item)),

	this, SLOT(lol(QListWidgetItem * item)));

lieber:
connect(listWidget, SIGNAL(itemClicked(QListWidgetItem*)),

	this, SLOT(lol(QListWidgetItem*)));

Ich glaube zwar nicht, dass das die Ursache für dein Problem ist, denn ich schreibe nie Bezeichner zu den Variablen dazu, das ist einfach bei connects weder notwendig, noch üblich.

Probiers bitte mal ohne "item" vielleicht geht es dann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Solche Fehler macht man nur einmal, dann merkt man sichs. Hab mir übrigens devC++ mal angeschaut, ich kann da auch kein Ouputfenster finden. Meiner Meinung nach ist devC++ eine recht pragmatische Umsetzung einer IDE. Wenn du ohne große Integrationsarbeiten Qt-Applikationen entwickeln bzw. debuggen willst, empfehle ich dir lieber das auch kostenlose

Code::Blocks

Das hat standardmäßig Qt integriert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

jor bis jetzt bin ich gut mit weg gekommen. Aber wie pp-coder schon gesagt hat. Es gibt keine debug funktion.

Wie könnte ich es realiesieren das ich in diesem Connect eine wertepübergabe an meinen slot bekomme

	connect(listWidget, SIGNAL(itemClicked(QListWidgetItem *)),

	this, SLOT(uebersetzung_unten(übergabe einer Qmap)));
void duden::uebersetzung_unten(){}
auf diese weise klappt es nicht :
	connect(listWidget, SIGNAL(itemClicked(QListWidgetItem *)),

	this, SLOT(uebersetzung_unten(uebersetzung_de, uebersetzung_en)));
beides sind Qmap´s
void duden::uebersetzung_unten(QMap <QString, QString> & uebersetzung_de, QMap <QString, QString> & uebersetzung_en){}

wenn ich das so realiesiere Kennt er das Signal wieder net. In den ganzen tut´s über qt4 wird zwar beschrieben wie connect etc gehen aber nicht was man in solchen fällen einer übergabe macht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also wenn ich das richtig interpretiere, was du willst, führt die Lösung deines Problems über ein eigenes Signal. Du connectest das Signal itemClicked(..) des ListWidgets mit einem neuen Slot. In diesem Slot schickst du dann dein eigenes Signal mit den Maps als Parametern. Dieses Signal connectest du dann zu deinem eigentlichen Slot uebersetzung_unten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hab mir code block mal gezogen und bissel konfiguriert. Nun sagt er mir aber komischer weise das er die Qmap net includen kann. komisch den mit der Konsole gehts. Die Pfade wo er dies raus zeiht hab ich auch richtig eingestellt und extra noch mal nachgeguckt Es ist vorhanden im include ordner Nur er will es net. Hat den fehler auch einer von euch?

Ich hab dann mal QtCore auch genomme da es dort ja enthalten ist. Auch diese findet er nicht. Sonst hat er aber keine probs mit den includes da er sosnt die anderen alle findet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...