Kalter Start in Qt

Verschiedenes zu Qt
Antworten
Tsubasa
Beiträge: 2
Registriert: 23. Oktober 2010 01:32

Kalter Start in Qt

Beitrag von Tsubasa »

Hallo!

Ich wurde quasi mit dem Einstieg in QT überrascht und sollte eine "simple" GUI entwerfen. Um schneller reinzukommen hab ich den QT Designer genutzt, den Code in meine Klasse in Eclipse kopiert und muss nun feststellen, dass die GUI so nicht läuft. Der Code sieht im Moment so aus:

Code: Alles auswählen

#ifndef MAINXM4244_H
#define MAINXM4244_H

#include <QtGui>
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QHeaderView>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QTextEdit>

#include "Hauptmenue.h"
#include <stdio.h>
#include <iostream>

using namespace std;

QT_BEGIN_NAMESPACE

Hauptmenue::Hauptmenue() {
	// TODO Auto-generated constructor stub

}

Hauptmenue::~Hauptmenue() {
	// TODO Auto-generated destructor stub
}

/*class Hauptmenue
{
public:*/
    QPushButton *pushButton;
    QPushButton *pushButton_2;
    QPushButton *pushButton_3;
    QLineEdit *lineEdit;
    QTextEdit *textEdit;
    QDialog *Dialog;

    void Hauptmenue::setupUi(/*QDialog *Dialog*/)
    {
    	cout << "Hallo Gui" << std::endl;
    	if (Dialog->objectName().isEmpty()) {
    		cout << "Hallo Gui drin" << std::endl;
    		Dialog->setObjectName(QString::fromUtf8("Dialog"));
    	}
    	cout << "Hallo Gui2" << std::endl;
    	Dialog->resize(400, 300);

		pushButton = new QPushButton(Dialog);
		pushButton->setObjectName(QString::fromUtf8("Suche startem"));
		pushButton->setGeometry(QRect(140, 10, 111, 28));
		pushButton_2 = new QPushButton(Dialog);
		pushButton_2->setObjectName(QString::fromUtf8("Verbinden"));
		pushButton_2->setGeometry(QRect(300, 230, 92, 28));
		pushButton_3 = new QPushButton(Dialog);
		pushButton_3->setObjectName(QString::fromUtf8("Beenden"));
		pushButton_3->setGeometry(QRect(150, 260, 92, 28));
		lineEdit = new QLineEdit(Dialog);
		lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
		lineEdit->setGeometry(QRect(62, 230, 221, 26));
		textEdit = new QTextEdit(Dialog);
		textEdit->setObjectName(QString::fromUtf8("textEdit"));
		textEdit->setGeometry(QRect(63, 59, 261, 161));

		retranslateUi(Dialog);

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

    void Hauptmenue::retranslateUi(QDialog *Dialog)
    {
        Dialog->setWindowTitle(QApplication::translate("Dialog", "Hauptmenue", 0, QApplication::UnicodeUTF8));
        pushButton->setText(QApplication::translate("Dialog", "Suche starten", 0, QApplication::UnicodeUTF8));
        pushButton_2->setText(QApplication::translate("Dialog", "Verbinden", 0, QApplication::UnicodeUTF8));
        pushButton_3->setText(QApplication::translate("Dialog", "Beenden", 0, QApplication::UnicodeUTF8));
        Q_UNUSED(Dialog);
    } // retranslateUi

//};

/*namespace Ui {
    class Hauptmenue: public Hauptmenue {};
} // namespace Ui*/

QT_END_NAMESPACE

#endif // MAINXM4244_H
Das erste cout wird noch ausgegeben, das 2. nicht mehr. Es scheint also daran zu liegen, dass das QDialog nicht richtig initialisiert wurde, aber ich weiß auch nicht, wie ich das machen kann. Die Methode wird übrigens von außerhalb aufgerufen (halt aus einer main-Methode).
Ich wäre euch sehr dankbar, wenn ihr mir bei dem Problem helfen könnt, dass die GUI endlich läuft.

MfG
Tsubasa
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Sorry aber lies erstmal ein paar Tutorials durch... http://doc.trolltech.com/4.7/tutorials.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Wenn du den Designer schon so vergewohltätigst solltest du das Zeug auch komplett zusammenkopieren (ne solltest du nicht, entweder Designer nutzen oder selbst basteln :) ) Es gibt beim Benutzen des Designers ein .ui file qmake erstellt ein (paar) "ui_*.h" files und dann gibts noch dein abgeleitetes QDialogKlassen file die das ui benutzt. Deine Klasse ist quasi die Roulade, im ui stehen welche Zutaten zur Füllung gehören, qmake ist der Koch der daraus eine Füllung macht ... die landet im "ui_*.h" file. Du hast da gerade die Füllung in die Pfanne gepackt und wunderst dich das alles auseinanderläuft ... ganz zu schweigen davon das jegliche Würze (Funktionalität) fehlt ... daher wäre wohl wirklich die Beschäftigung mit den Examples das beste :)


edith: moc<>ui
Zuletzt geändert von padreigh am 26. Oktober 2010 16:27, insgesamt 2-mal geändert.
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Wobei keine moc-files erzeugt werden, sondern ui_<classname>.h, welche vom uic generiert werden. Aber prinzipiell stimmt das schon so :P
Tsubasa
Beiträge: 2
Registriert: 23. Oktober 2010 01:32

Beitrag von Tsubasa »

Hallo!

Vielen dank für eure Beiträge, hab jetzt aber das "Glück", dass jemand anderes, der mehr Ahnung von Qt hat, sich der GUI annimmt. Die Tutorials werde ich mir aber trotzdem für künftige "Notfälle" mal anschauen.

MfG
Tsubasa
Antworten