Seite 1 von 1

Fenster öffnen?

Verfasst: 10. Juni 2010 11:07
von dounut90
Erstmal ein Hallo ans Forum und nurn zu meiner Frage:

Warscheinlich liegts nur daran das mir die Fachbegriffe fehlen aber ich hab mich echt dumm und dusselig gegooglet. Also ich habe ein Projekt und habe diesem ein zweites Disgn Formular hinzugefügt. Nun möchte ich, dass das neue Fenster geöffnet wird wenn ich im Hauptfenster einen Button klicke.

Also Button:

Code: Alles auswählen

void MainWindow::on_pushButton_2_clicked()
{


}

Neues Fenster:

Code: Alles auswählen

#include "optionen.h"
#include "ui_optionen.h"

Optionen::Optionen(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Optionen)
{
    ui->setupUi(this);
}

Optionen::~Optionen()
{
    delete ui;
}

void Optionen::changeEvent(QEvent *e)
{
    QDialog::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
Ich bin auch über jeden Link sehr dankbar ;)

Verfasst: 10. Juni 2010 11:09
von franzf
Du suchst SIGNAL/SLOT.
http://doc.qt.nokia.com/4.6/signalsandslots.html
Das clicked() des Buttons auf deinen SLOT connecten.

Verfasst: 10. Juni 2010 14:48
von dounut90
okay danke, leider schnall ich noch nicht so ganz wie man diesen Slot Befehl jetzt einsetzt. Kannst du mir das ganze vielleicht noch mal an einem Beispiel zeigen oder so?

Verfasst: 10. Juni 2010 15:07
von franzf
Es gibt keinen "SLOT-Befehl". Es gibt im ganzen C++ keinen "Befehl", nur Funktionen o.Ä., so auch Macros, wie SLOT eines ist ;)
connect ist eine Methode der Klasse QObject.
Da das "Counter"_Example im obigen Link mMn. alles sagt, werde ich kein eigenes Beispiel schreiben. Wenn du noch Beispiele suchst, gibt es genügend in den Qt-Sourcen, speziell die Verzeichnisse "examples" und "demos" enthalten einiges an Anschauungsmaterial.
Ganz kurz zusammengefasst:
SLOT-Deklaration kommt unter "public slots:". Für eigene SLOTS brauchst du das Q_OBJECT-Macro in deiner Klassendefinition. Um Signals und Slots zu verbinden, brauchst du die Funktion "QObject::connect" oder die überladene nicht-statische Funktion.
Fang doch mit einem kleinen Beispiel an, um zu experimentieren. Ist eigentlich ziemlich einfach.