Fenster öffnen?

Alles rund um die Programmierung mit Qt
Antworten
dounut90
Beiträge: 2
Registriert: 9. Juni 2010 11:29

Fenster öffnen?

Beitrag 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 ;)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du suchst SIGNAL/SLOT.
http://doc.qt.nokia.com/4.6/signalsandslots.html
Das clicked() des Buttons auf deinen SLOT connecten.
dounut90
Beiträge: 2
Registriert: 9. Juni 2010 11:29

Beitrag 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?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
Antworten