anfängerfrage

Verschiedenes zu Qt
Antworten
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

anfängerfrage

Beitrag von bueffel2 »

hallo,

ich bekomme folgende Fehlermeldung:

Code: Alles auswählen

main.cpp:11: error: no matching function for call to ‘Ui::Dialog::setupUi(QMainWindow*&)’
Ich hab folgendes:

main.cpp

Code: Alles auswählen

#include <QApplication>
#include <QMainWindow>
#include "ui_programm.h"

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    QMainWindow *form = new QMainWindow();
    Ui::Dialog hb;

    hb.setupUi(form);

    form->show();
    return app.exec();
}
programm.h (hab noch eine ui_programm.h - komisch oder?)

Code: Alles auswählen

/********************************************************************************
** Form generated from reading ui file 'programm.ui'
**
** Created: Sat Nov 17 15:09:57 2007
**      by: Qt User Interface Compiler version 4.3.1
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef PROGRAMM_H
#define PROGRAMM_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QDialogButtonBox>

class Ui_Dialog
{
public:
    QDialogButtonBox *buttonBox;

    void setupUi(QDialog *Dialog)
    {
    if (Dialog->objectName().isEmpty())
        Dialog->setObjectName(QString::fromUtf8("Dialog"));
    Dialog->resize(400, 300);
    buttonBox = new QDialogButtonBox(Dialog);
    buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
    buttonBox->setGeometry(QRect(30, 240, 341, 32));
    buttonBox->setOrientation(Qt::Horizontal);
    buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok);

    retranslateUi(Dialog);
    QObject::connect(buttonBox, SIGNAL(accepted()), Dialog, SLOT(accept()));
    QObject::connect(buttonBox, SIGNAL(rejected()), Dialog, SLOT(reject()));

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

    void retranslateUi(QDialog *Dialog)
    {
    Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
    Q_UNUSED(Dialog);
    } // retranslateUi

};

namespace Ui {
    class Dialog: public Ui_Dialog {};
} // namespace Ui

#endif // PROGRAMM_H

test.pro

Code: Alles auswählen

######################################################################
# Automatically generated by qmake (2.01a) Sat Nov 17 15:10:31 2007
######################################################################

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .

# Input
HEADERS += programm.h
FORMS += programm.ui
SOURCES += main.cpp
Was ist falsch? Binn blutiger Anfänger?

2. Frage: *Wo* antworte ich auf Ereignisse?

Danke

bueffel
DeepDiver
Beiträge: 34
Registriert: 7. November 2007 10:10
Wohnort: Fürstenfeldbruck
Kontaktdaten:

Beitrag von DeepDiver »

Die Methode setupUi() will als Parameter QDialog*.
Du übergibst aber QMainWindow.

Das kann nicht funktionieren!

Arbeite Dich doch durch das Qt Tutorial und die Qt Beispiele.
http://doc.trolltech.com/4.3/tutorial.html
http://doc.trolltech.com/4.3/examples.html

Da wird so ziemlich alles erklärt.

Wenn noch weiter Fragen auftreten, dann bitte hier posten - wir helfen weiter.

CU Tom
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

1. Wie würde das oben denn richtig aussehen?
2. Gibt es _gute_ Bücher zum Thema? Hab hier ein Buch namens Qt4 GUI-Entwicklung von Jüergen Wolf, bin aber total unzufrieden.
DeepDiver
Beiträge: 34
Registriert: 7. November 2007 10:10
Wohnort: Fürstenfeldbruck
Kontaktdaten:

Beitrag von DeepDiver »

Code: Alles auswählen

#include <QApplication>
#include <QMainWindow>
#include "ui_programm.h"

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    QDialog *form = new QDialog();
    Ui::Dialog hb;

    hb.setupUi(form);

    form->show();
    return app.exec();
} 

http://www.amazon.de/C-GUI-Programming- ... 588&sr=8-4
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

Vielen Vielen Vielen Dank!

Noch noch eine Bitte: Kannst Du mal ein simples Beispiel geben, wie ich z.b. auf den klick eines Buttons eine QMessageBox ausgeben kann? Oder ein neues Fenster oeffnen kann?
Nur wenn Du die Zeit gerade sowieso hast
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

hi

ich bins nochmal.
hab ein dialog mit qt4 designer gebastelt. Hab nun mit uic den code umgewandelt.
Hab das umgewandelte in die main.cpp eingetragen.
In der ui_programm.h mach ich dann:

Code: Alles auswählen


    QObject::connect(pushButton_2, SIGNAL(clicked()), dialog, SLOT( quit() ) );
    QObject::connect(pushButton, SIGNAL(clicked()), tableWidget, SLOT( selectAll() ));
Bekomme aber folgenden Fehler:

Code: Alles auswählen

Object::connect: No such slot QDialog::quit()
Object::connect:  (sender name:   'pushButton_2')
Object::connect:  (receiver name: 'dialog')
Ich denk ich hab vergessen was einzubinden.
ui_programm.h

Code: Alles auswählen

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QPushButton>
#include <QtGui/QTableWidget>
Burgpflanze
Beiträge: 89
Registriert: 24. Februar 2006 16:41
Wohnort: Dresden

Beitrag von Burgpflanze »

1. Ein QDialog hat keinen Slot "quit()".
2. Meines Wissens nach nimmt man in der von uic erstellten Header-Datei keine manuellen Änderungen vor, sondern leitet eine Klasse davon ab.

Und beschäftige dich doch bitte mit der Dokumentation, so wie es DeepDiver schon vorgeschlagen hat!
Gruß, Peter
DeepDiver
Beiträge: 34
Registriert: 7. November 2007 10:10
Wohnort: Fürstenfeldbruck
Kontaktdaten:

Beitrag von DeepDiver »

[quote="bueffel2"]Vielen Vielen Vielen Dank!

.../quote]

Gerne geschehen! Aller Anfang ist schwer!
Es ist aber unerlässlich, dass Du Dich mit der Dokumentation auseinander setzt.
Mit Qt hast Du eh Glück - ich kenne keine Software-Bibliothek, die so gut und ausreichend dokumentiert wird.
Nimm Dir bitte die Zeit und arbeite das Tutorial und die Examples Schritt für Schritt durch.
Nur so kannst Du etwas lernen.
Aus Deinen Posts lese ich auch heraus, dass ein gutes C++ Buch auch mal helfen könnte.

Wenn Du auf Deinem Weg durch Tutorial und Examples auf Probleme stößt, poste einfach wieder - wir helfen dann schon ...


Gruß und noch einen schönen Sonntag

Tom
bueffel2
Beiträge: 37
Registriert: 17. November 2007 15:22

Beitrag von bueffel2 »

Hallo,

erst einmal ein dankeschön an Tom, Burgpflanze.
1. Ein QDialog hat keinen Slot "quit()".
Aber einen slot close() :)
2. Meines Wissens nach nimmt man in der von uic erstellten Header-Datei keine manuellen Änderungen vor, sondern leitet eine Klasse davon ab.
Du meinst, man erstellt erst das design im designer und macht es zu einer Header-File. Anschließend leitet man davon eine Klasse ab. Sprich, man schreibt nicht mehr von Hand in die Header-File. Richtig?
tom hat geschrieben:Mit Qt hast Du eh Glück - ich kenne keine Software-Bibliothek, die so gut und ausreichend dokumentiert wird.
Ja, das finde ich auch.
Tom hat geschrieben:Nimm Dir bitte die Zeit und arbeite das Tutorial und die Examples Schritt für Schritt durch. Nur so kannst Du etwas lernen
Ich denke Du hast recht. Werde ich auf jedenfall tun.
Tom hat geschrieben:Aus Deinen Posts lese ich auch heraus, dass ein gutes C++ Buch auch mal helfen könnte.
Richtig! Woran hast Du das bemerkt?

Wie immer großen Dank und angenehmen Sonntag

buffalo
Antworten