[gelöst] eigene Slots / dialog mit auto-connect

Verschiedenes zu Qt
Antworten
theRiddler
Beiträge: 13
Registriert: 6. Mai 2006 12:23
Kontaktdaten:

[gelöst] eigene Slots / dialog mit auto-connect

Beitrag von theRiddler »

Hi.

Ich weiss das Thema kommt öfters vor, aber ich habe in den Threads keine Lösung gefunden.
Ich habe einen Dialog mit dem Designer erstellt und dann eine entsprechende Klasse von QDialog abgeleitet.
(wie in http://qtforum.de/forum/viewtopic.php?t=1775 beschrieben)
Den Header für das ui file habe ich von uic generieren lassen.
Das alles lässt sich auch kompilieren, aber das auto-connect scheint nicht zu funktionieren... Weiß jemand wieso?

main.cpp

Code: Alles auswählen

#include <qapplication.h>
#include "dialog.h"

int main(int argc, char *argv[]){
	QApplication app(argc,argv);
	QDialog *window = new QDialog;
	GoToCellDialog mydialog;

	mydialog.show();
	return app.exec();
}
dialog.h

Code: Alles auswählen

#ifndef DIALOG_H
#define DIALOG_H

#include "gotocelldialog.h"

class GoToCellDialog : public QDialog, private Ui::GoToCellDialog{
	Q_OBJECT

public:
	GoToCellDialog(QWidget *parent = 0);
	~GoToCellDialog();

private slots:
	void on_okButton_clicked();
};

#endif
dialog.cpp

Code: Alles auswählen

#include "dialog.h"
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qvalidator.h>
#include <qmessagebox.h>

GoToCellDialog::GoToCellDialog(QWidget *parent) : QDialog(parent)
{
	setupUi(this);
	QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
	lineEdit->setValidator(new QRegExpValidator(regExp,this));
	
}

GoToCellDialog::~GoToCellDialog(){
}

void GoToCellDialog::on_okButton_clicked(){
	//QMessageBox::information(this, tr("Testmeldung"), tr("Testbla"), QMessageBox::Cancel);
	okButton->setEnabled(lineEdit->hasAcceptableInput());
}
Im uic generierten Header muss man für das auto-connect nichts ändern, oder?

Vielen Dank

(QT4 Open Source)
Zuletzt geändert von theRiddler am 8. Mai 2006 14:19, insgesamt 1-mal geändert.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Re: eigene Slots / dialog mit auto-connect

Beitrag von patrik08 »

theRiddler hat geschrieben: Im uic generierten Header muss man für das auto-connect nichts ändern, oder?
(QT4 Open Source)
Es bring nicht sie zu aendern... wenn du das naechste mal
make & enter machst wird alles ueberschrieben...

die slots muss man im externe header e source deklarieren...
im header.....

es kommt beispiel code hat nicht mit deinem zu tun...

Code: Alles auswählen

public slots:
    void RepaintQuery();
    void PaintTable(QString tablename);
und im source...

Code: Alles auswählen

void GuiMain::RepaintQuery()
{
    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
    dumptofile("soquery.xml");
    textquery1->clear();
    textquery1->insertPlainText(file_get_contents("soquery.xml"));
    textquery1->toPlainText();
    QApplication::restoreOverrideCursor();  
}


den slot setzen....

connect(objektname, SIGNAL(currentIndexChanged(QString)), this , SLOT(PaintTable(QString)));

http://qt4.digitalfanatics.org/tiqt/chapter-3.html

der generierte header vom ui file hat seine eigene slots... die eventuel in deinem externen file ueberschrieben werden koennen....
theRiddler
Beiträge: 13
Registriert: 6. Mai 2006 12:23
Kontaktdaten:

getestet

Beitrag von theRiddler »

Danke... ich hab das ganze nochmals mit dem connect getestet, aber es funktioniert noch immer nicht, allerdings liegt es glaube ich an der Zeile

Code: Alles auswählen

//QMessageBox::information(this, tr("Testmeldung"), tr("Testbla"), QMessageBox::Cancel);
   okButton->setEnabled(lineEdit->hasAcceptableInput()); 
weil, wenn ich die MessageBox ausgeben will reagiert er auf den OKButton, aber dann hängt er beim ausführen.

vielleicht weiss wer, was an der Zeile falsch sein könnte (Ich habs auch schon so pobiert wie auf http://qt4.digitalfanatics.org/tiqt/chapter-3.html)


danke
Adi
Beiträge: 87
Registriert: 1. Januar 2006 14:51

Beitrag von Adi »

Also bei mir würde das grundsätzlich gehen.

Was aber falsch sein könnte ist, dass du okButton enablen willst wenn lineEdit gültig ist, diese aber im okButton prüfst der ja zur der Zeit desabled sein müsste.

Diese Überprüfung/Umschaltung müsste im signal von lineEdit sein, wie ich es bereits in der PN geschrieben habe.
Win 2k, Win XP
QT Win Opensource 4.1.1
MinGW 3.4.2
Antworten