2017-07-13 3 views
-2

Ich würde mich freuen, wenn Sie mir ein wenig helfen könnten. So, wie es im Thema ist, habe ich Fehler beim Versuch, Q_OBJECT :: connect zu tun. So ist mein Code: preferences.h:Kein solcher Slot MainWindow :: showPreferencesWindow()

#include <QDialog> 
#include <QApplication> 
#include <QCoreApplication> 
namespace Ui { 
class Preferences; 
} 

class Preferences : public QDialog 
{ 
    Q_OBJECT 

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


private: 
    Ui::Preferences *ui; 
}; 

preferences.cpp:

#include "preferences.h" 
#include "ui_preferences.h" 

Preferences::Preferences(QWidget *parent) : 
    QDialog(parent), 
    ui(new Ui::Preferences) 
{ 
    ui->setupUi(this); 
} 

Preferences::~Preferences() 
{ 
    delete ui; 
} 

mainwindow.h:

#include "preferences.h" 
#include "addkierowca.h" 


namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 
    Preferences *PreferencesWindow; 
private: 
/* some private methods */ 
void showPreferencesWindow(); 

Und last but not least mainwindow.cpp:

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    connect(ui->actionUstawiania, SIGNAL(triggered()), this, SLOT(showPreferencesWindow())); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::showPreferencesWindow() 
{ 
    PreferencesWindow = new Preferences(this); 
    PreferencesWindow->show(); 
    PreferencesWindow->exec(); 
} 

Ich konnte niemanden irgendwo finden, und ich weiß, dass es fast dieselben Themen gibt, aber keiner von ihnen hat mir geholfen. Danke in Beratung.

+0

Haben Sie versucht, den Slot unter 'slots:' zu deklarieren? Warum benutzen Leute immer noch die alte Verbindungssyntax nach 6 Jahren von Qt 5? – LogicStuff

Antwort

0

Sie verwenden showPreferencesWindow als ein Steckplatz in der Verbindung, so dass Sie es an einem Steckplatz benötigen.

Änderung:

private slots: 
    void showPreferencesWindow(); 

An diesem Punkt moc (von der Make-Datei verwendet wird) wird den richtigen Code für den Anschluss benötigt generiert korrekt zu arbeiten.

+0

Danke, das hat geholfen :) –

Verwandte Themen