没有这样的插槽MainWindow :: showPreferencesWindow()

时间:2017-07-13 14:03:02

标签: c++ qt

如果你能帮我一点,我会很高兴的。 因为它在主题中我有错误尝试做Q_OBJECT :: connect。 所以我的代码是: preferences.h:

#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();

最后但并非最不重要的是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();
}

我无法在任何地方找到anwser,我知道几乎有相同的主题,但它们都没有帮助我。 谢谢你的建议。

1 个答案:

答案 0 :(得分:0)

您正在使用showPreferencesWindow作为连接中的插槽,因此需要将其连接到插槽。

更改为:

 private slots:
   void showPreferencesWindow();

此时,moc(由makefile使用)将生成连接正常工作所需的正确代码。