Designer mit Code verbinden

Alles rund um die Programmierung mit Qt
Antworten
k_wos
Beiträge: 2
Registriert: 14. Juli 2007 15:59

Designer mit Code verbinden

Beitrag von k_wos »

Hallo! Bin leider noch ein blutiger Anfänger.

Ich habe mit dem Designer bereits ein einfaches MainWindow erstellt (ui-Datei).
Danach habe ich auch schon eine passende .cpp (MessageBox soll aufgerufen werden) und .h erstellt. Fehlermeldung bekomme ich keine, aber es passiert einfach nichts.

Hier meine Dateien
mainwindow.cpp

Code: Alles auswählen


#include "mainwindow.h" 
#include <QtGui> 
#include <QMessageBox>
#include <QWidget>


MainWindow::MainWindow() 
 { 

setupUi(this); 
  
QMessageBox::information(this, "Alles OK", "Es geht ");
} 
Mainwindow.h

Code: Alles auswählen

#ifndef MAINWINDOW_H_ 
#define MAINWINDOW_H_ 
#include <QMainWindow> 
#include <QWidget>

#include "ui_MainWindow.h" 

class MainWindow : public QMainWindow, public Ui::MainWindow 
{ 

Q_OBJECT 

public: 
MainWindow(); 


}; 

#endif 
ui_mainwindow.h (mit Designer erstellt)

Code: Alles auswählen

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QWidget>

class Ui_MainWindow
{
public:
    QAction *actionExit;
    QWidget *centralwidget;
    QMenuBar *menubar;
    QMenu *menuFile;
    QStatusBar *statusbar;

    void setupUi(QMainWindow *MainWindow)
    {
    if (MainWindow->objectName().isEmpty())
        MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
    QSize size(800, 600);
    size = size.expandedTo(MainWindow->minimumSizeHint());
    MainWindow->resize(size);
    actionExit = new QAction(MainWindow);
    actionExit->setObjectName(QString::fromUtf8("actionExit"));
    centralwidget = new QWidget(MainWindow);
    centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
    MainWindow->setCentralWidget(centralwidget);
    menubar = new QMenuBar(MainWindow);
    menubar->setObjectName(QString::fromUtf8("menubar"));
    menubar->setGeometry(QRect(0, 0, 800, 21));
    menuFile = new QMenu(menubar);
    menuFile->setObjectName(QString::fromUtf8("menuFile"));
    MainWindow->setMenuBar(menubar);
    statusbar = new QStatusBar(MainWindow);
    statusbar->setObjectName(QString::fromUtf8("statusbar"));
    MainWindow->setStatusBar(statusbar);

    menubar->addAction(menuFile->menuAction());
    menuFile->addAction(actionExit);

    retranslateUi(MainWindow);
    QObject::connect(actionExit, SIGNAL(triggered()), MainWindow, SLOT(close()));

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

    void retranslateUi(QMainWindow *MainWindow)
    {
    MainWindow->setWindowTitle(QString());
    actionExit->setText(QApplication::translate("MainWindow", "Exit", 0, QApplication::UnicodeUTF8));
    menuFile->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

#endif // UI_MAINWINDOW_H
Was mache ich falsch??
Danke
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

probier es mal so:

Code: Alles auswählen

#include "mainwindow.h"
#include <QtGui>
#include <QMessageBox>
#include <QWidget>


MainWindow::MainWindow()
: QMainWindow()
 {

setupUi(this);
 
QMessageBox::information(this, "Alles OK", "Es geht ");
} 
so stehts auch im assistant. ;)

wenn es nicht klappt, poste mal die main-funktion.

mfg,
julian
k_wos
Beiträge: 2
Registriert: 14. Juli 2007 15:59

Beitrag von k_wos »

Hallo!
Hat leider auch nichts gebracht.

Hier meine main.cpp

Code: Alles auswählen

#include <QApplication>
#include <QDialog>
#include <QMainWindow>
#include <QWidget>
#include <QMessageBox>

#include "ui_mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    
    QMainWindow *mw = new QMainWindow;
    Ui::MainWindow ui;
    ui.setupUi(mw);
    mw->show();

    return app.exec();
}
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

in meinem programm brauch ich das setupUi etc garnicht nochmal, sollte auch irgendwo aus dem asisstant hervorgehen, da hab ich es ja auch her.

probier mal zusaetzlich zur anderen geaenderten datei

Code: Alles auswählen

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    MainWindow mainWin;
    mainWin.show();
    return app.exec();
} 
// edit: ueber die main-fkt NUR

Code: Alles auswählen

#include <QApplication>
#include "mainwindow.h" 
mfg,
julian
Antworten