Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Q_OBJECT und templates

  1. #1
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255

    Q_OBJECT und templates

    Stehe vor dem Problem das ich QMetaObject in einer Template Klasse benötige.
    Weis aber nicht warum mir der Compiler das hier verweigert.
    Code:
    #ifndef HEDITTABLEWIDGET_H
    #define HEDITTABLEWIDGET_H
    
    #include <QObject>
    #include <QString>
    #include <QTabWidget>
    #include <QTableView>
    
    class QTableView;
    class QSqlTableModel;
    class QPushButton;
    class QModelIndex;
    class Connection;
    class HTabWidget;
    class HTableView;
    
    template<class T>
    class HEditTableWidget : public QTabWidget
    {
        Q_OBJECT
    
    public:
        HEditTableWidget( HTabWidget *parent = 0, const QString &name = 0, Connection *con = 0 );
        virtual ~HEditTableWidget() {};
    
    private:
        HTableView *m_HTableView;
        Connection *m_Connection;
        QPushButton *btnSave, *btnRestore;
        QSqlTableModel *m_QSqlTableModel;
    
    };
    
    #endif
    Meldung:
    Code:
    HEditTableWidget.h:29: Fehler: Deklaration von »class T«
    HEditTableWidget.h:26: Fehler: überdeckt Templateparameter »class T«
    Geändert von undefined (21-03-2008 um 15:22 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Versuch doch mal, deinen Template-Parameter nicht T zu nennen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Stehe vor dem Problem das ich QMetaObject in einer Template Klasse benötige.
    Weis aber nicht warum mir der Compiler das hier verweigert.
    Das wird von Trolltech leider nicht unterstützt. Templates können das QObject-Makro nicht beinhalten. Das ist hier unter "Limitations" nachzulesen:
    http://doc.trolltech.com/4.4beta/moc.html
    So weit ich weiß, sagt die Dokumentation an der Stelle noch nicht die ganze Wahrheit, denn dort wird nur gesagt, dass Templates keine Signals oder Slots beinhalten können. Tatsächlich führt aber bereits Q_OBJECT selber zu Problemen.

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Danke für den link, den werde ich jetzt mal durchlesen.
    Habe es in der zwischenzeit dank KDE Repository über Umwege hinbekommen.
    PHP-Code:
    #ifndef HEDITTABLEWIDGET_H
    #define HEDITTABLEWIDGET_H

    #include <QObject>
    #include <QString>
    #include <QTabWidget>
    #include <QTableView>
    #include <QMetaType>

    class QTableView;
    class 
    QSqlTableModel;
    class 
    QPushButton;
    class 
    QModelIndex;
    class 
    Connection;
    class 
    HTabWidget;
    class 
    HTableView;

    class 
    HEditTableWidget : public QTabWidget
    {
        
    Q_OBJECT

    public:
        
    HEditTableWidgetHTabWidget *parent 0, const QString &name 0Connection *con );
        
    template<class THEditTableWidget createObjectHTabWidget *parent 0, const QString &name 0Connection *con );
        
    virtual ~HEditTableWidget() {};

    private:
        
    HTableView *m_HTableView;
        
    Connection *m_Connection;
        
    QPushButton *btnSave, *btnRestore;
        
    QSqlTableModel *m_QSqlTableModel;

    };

    template<class T>
    HEditTableWidget HEditTableWidget::createObjectHTabWidget *parent,
          const 
    QString &name,
          
    Connection *con )
    {
      return new 
    HEditTableWidgetparentnamecon );
    };

    #endif 
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •