Seite 1 von 1

[gelöst] Qt Vista - exe has stop working

Verfasst: 7. Januar 2008 11:36
von TimeForGold
Hallo Zusammen,

ich bin in ziemlich am Anfang und schreibe eine kleine Qt Anwendung unter Vista. Zu Anfang, ändere ich die Eigenschaft eines QPushButtons. Wenn ich jetzt eine Debugversion baue, meldet sich Vista mit Qt-Test.exe hast stop working. Lasse ich die Codezeile weg in der ich die Eigenschaft des Buttons verändere funktioniert alles, die bereits erstellte GUI wird angezeigt.

Code: Alles auswählen

#include "qt_test.h"

Qt_Test::Qt_Test(QWidget *parent)
    : QWidget(parent)
{
	ui.setupUi(this);
	m_pcBtnStop->setEnabled(false); //Zeile die das Problem verursacht
}

Qt_Test::~Qt_Test()
{

}
Verwende Qt 4.3.3 mit der Eclipseintegration 1.0.1.

Jemand eine Idee? Danke, Gruß TimeForGold

Verfasst: 7. Januar 2008 11:41
von ChMaster
Servus TimeForGold,

Code: Alles auswählen

m_pcBtnStop->setEnabled(false); //Zeile die das Problem verursacht 
Man sieht auf anhieb wo der fehler ist, glaube ich ;). Probiere es mal damit: (dann müsste es theoretisch gehen)

Code: Alles auswählen

ui.m_pcBtnStop->setEnabled(false);

Verfasst: 7. Januar 2008 11:41
von CaptnChaos
hm. Das dürfte eig garnicht kompilieren.

Verfasst: 7. Januar 2008 11:45
von TimeForGold
@ChMaster Danke, das war die Lösung. Kannst du mir erklären warum ich das so machen muss? Ich habe schonmal eine Qt-Anwendung geschrieben, da war es nicht nötig über ui die Steuerelemente aufzurufen. Muss dazu sagen die Anwendung habe ich auch unter WinXP verwendet bzw auch geschrieben.

Verfasst: 7. Januar 2008 11:53
von CaptnChaos
hast du in der Header einmal

Code: Alles auswählen

class MyWidget : publy QWidget, public Ui::Form
und dann nochmal

Code: Alles auswählen

private:
       Ui::Form ui;
??
dann lösch eins von beidem raus.

wenn du ui rauslöschst, musst du einfach nur

Code: Alles auswählen

setupUi(this);
machen und kannst wie ganz oben auf deine Elemente zugreifen.

Wenn du die Klassenableitung löschst, musst du wie hier

Code: Alles auswählen

ui.setupUi(this);
aufrufen und alle Elemente über ui Aufrufen, wie ChMaster schon gesagt hat.

Verfasst: 7. Januar 2008 11:53
von ChMaster
und hier ein bsp. zu KernelPanics Post

Header: qt_test.h

Code: Alles auswählen

#ifndef QT_TEST_H
#define QT_TEST_H

#include <QtGui>
#include <QtCore>

#include "ui_qttest.h"

// Ui::<FormName> ist der Formname deiner Ui Datei die du im Designer vergeben hast
// einfach in die ui_qttest.h reinschauen :)
class Qt_Test: public QWidget, public Ui::Qt_Test
{
	Q_OBJECT

	public:
		Qt_Test( QWidget *parent = 0 );
		~Qt_Test();
};

#endif // QT_TEST_H
Cpp: qt_test.cpp

Code: Alles auswählen

#include "qt_test.h"

Qt_Test::Qt_Test(QWidget *parent)
    : QWidget(parent)
{
   setupUi(this);
   m_pcBtnStop->setEnabled(false);
}

Qt_Test::~Qt_Test()
{

}