是否有可能让Qt Creators Ui设计师为一个它无法识别的类创建插槽?

时间:2012-11-16 22:23:26

标签: c++ qt c++11 qt-creator

即,通过右键单击窗口小部件并选择“转到插槽...”来创建插槽。

示例1,这有效:

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

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

这不是,因为显然设计师寻找Ui :: MainWindow *并且如果它找不到它就完全吓坏了(得到“包含'Ui :: MainWindow'的类无法找到......” )

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <memory>
#include <QMainWindow>

namespace Ui {
class MainWindow;
}



class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    std::unique_ptr<Ui::MainWindow> ui;
};

#endif // MAINWINDOW_H

我基本上正在寻找一种方法来告诉Qt“是的,我真的是指那个班级。我知道它不包含Ui :: MainWindow *,一切都会好的......”。除非我错了,并且由于某种原因,类实际上需要将它作为普通指针。

1 个答案:

答案 0 :(得分:0)

当QT创建者找不到您的“ mainwindow.cpp”文件来放置插槽函数定义时,发生“找不到包含'Ui :: MainWindow'的类...”的问题。

确保您的mainwindow.h具有以下内容作为私有变量:

Ui::MainWindow *ui;

并且在mainwindow.cpp文件中包含以下内容:

#include "ui_mainwindow.h"

如果这不起作用,则您的QT创建者可能存在错误。尝试更新您的软件。

相关问题