Seite 1 von 1

[gelöst] tr() wird als nicht deklariert angezeigt

Verfasst: 20. August 2008 23:46
von mase
Hallo!
Ich habe heut mal wieder ein bisjen mit QT4 geübt.
Ich hab ein Problem in kdevelop.
Folgender Beispielcode:

Code: Alles auswählen

#include <QApplication>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QLabel>
#include <QSpinBox>
#include <QSlider>



int main(int argc, char* argv[])
{
      QApplication* app = new QApplication(argc, argv);
      QWidget* window = new QWidget;
      
      QVBoxLayout* mainlayout = new QVBoxLayout(window);
      QHBoxLayout* buttonlayout = new QHBoxLayout;
      
      QLabel* label1 = new QLabel("0");
      QSpinBox* spinbox1 = new QSpinBox;
      QSlider* slider1 = new QSlider(Qt::Horizontal);
      
      buttonlayout->addWidget(label1);
      buttonlayout->addWidget(spinbox1);
      buttonlayout->addWidget(slider1);
      
      QPushButton* close = new QPushButton(tr("Close"));
      
      mainlayout->addLayout(buttonlayout);
      mainlayout->addWidget(close);
      
      window->show();


      return app->exec();
}
Mein Problem ist, dass tr() als nicht deklariert angezeigt wird, und
die Kompilierung fehlschägt.
In einem vorigen Projekt, das ich auch mit kdevelop programmiert
hab, funktioniert es problemlos. Dabei hab ich gar nichts anders
gemacht.
Als Template hab ich "einfache QT4-Anwendung" und "QT4-Anwendung"
probiert. In keinem funktioniert tr().
Woran kann das liegen? Ich verwende Debian Lenny.

Verfasst: 21. August 2008 01:28
von Volker
Evtl. daran, dass tr eine Funktion in QObject ist. Die Main Funktion aber nicht. Siehe: http://doc.trolltech.com/4.4/qobject.html#tr

Verfasst: 21. August 2008 02:00
von mase
Aber meines Wissens sind doch fast alle Objekte von QObject
abgeleitet. Zumindest mal alle, GUI-Teile. Also muss doch tr()
für alle verfügbar sein.

Verfasst: 21. August 2008 07:40
von CaptnChaos
Aber nur innerhalb ein QObject-Subclass. Ansonsten musst du QKlassenName::tr() verwenden.

Verfasst: 21. August 2008 13:08
von mase
Stimmt!
Die main-Funktion hat ja keine solche Funktion.
In meinem vorigen Projekt hab ich tr() innerhalb der
einer QT-Klasse verwendet.
QObject::tr() ist hier die Lösung.

Danke!