2017-07-04 3 views
0

Je me bats depuis un moment avec un problème sur Qt et je pensais que je viendrais ici pour voir si quelqu'un avait des solutions.Qt Creator: Problème avec la déclaration de la fonction membre en classe

J'ai créé une interface graphique en utilisant les outils QT et ai programmé toutes les fonctions pour chaque chose respective. Cependant, je ne peux pas sembler corriger avec succès la question suivante:

C:\Python34\2SprayCoater\mainwindow.cpp:11: error: no 'int mainwindow::MainWindow(QWidget*)' member function declared in class 'mainwindow' mainwindow::MainWindow(QWidget *parent):QMainWindow(parent)

La partie du Code de la bibliothèque en question est:

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 

namespace Ui { 
class MainWindow; 
} 

class mainwindow : public QMainWindow 
{ 
    Q_OBJECT 

    public: 
    explicit mainwindow(QWidget *parent = 0); 
    ~mainwindow(); 

Et la référence à ce code dans le fichier cpp est :

#include "mainwindow.h" 
#include <QApplication> 

#include "main.cpp" 
#include <QtSerialPort/QSerialPort> 
#include <QtCore/QCoreApplication> 
#include <QtCore/QDebug> 



mainwindow::MainWindow(QWidget *parent):QMainWindow(parent) 

{ 
    ui.setupUi(this); 
} 

J'ai essayé de corriger cela en changeant simplement explicite

mainwindow(QWidget *parent = 0);

dans le fichier d'en-tête à

explicit mainwindow(QWidget *parent = 0):QMainWindow(parent);

qui se termine juste en créant un bourbier de différentes questions, mais fixe l'original. Qu'est-ce que je rate? Merci d'avance.

+0

Pourquoi incluez-vous main.cpp dans mainwindow.cpp? – eyllanesc

+0

J'ai trouvé que quand je le fais d'une autre manière, je reçois des erreurs de compilation avec l'initialisation du port série. Le mettre en main et en référençant alors y compris main.cpp dans mainwindow.cpp l'a corrigé. –

+0

Vous pouvez partager le projet entier via github, drive ou similaire. – eyllanesc

Répondre

1

Le problème est généré parce que vous avez supprimé des en-têtes nécessaires, par exemple:

#include "ui_mainwindow.h" 

Il est généré par le fichier .ui, à savoir la conception est converti en code avant de le compiler. L'attribut ui a besoin de ce fichier, aussi ui est un pointeur donc pour accéder à ses méthodes, vous devez utiliser ->. Vous devez changer:

ui.setupUi(this); 

à

ui->setupUi(this); 

Un autre problème grave est que vous avez renommé mainwindow à mainWindow dans le constructeur.

explicit mainwindow(QWidget *parent = 0); 

mainwindow::MainWindow(QWidget *parent):QMainWindow(parent) 
      [here]