c++ - 是否可以让 Qt Creators Ui 设计器为其无法识别的类创建插槽?

标签 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*,没关系,一切都会好起来的......”。除非我错了,并且该类出于某种原因实际上需要将其作为普通指针。

最佳答案

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

确保您的 mainwindow.h 具有以下作为私有(private)变量:

Ui::MainWindow *ui;

以下包含在您的 mainwindow.cpp 文件中:
#include "ui_mainwindow.h"

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

关于c++ - 是否可以让 Qt Creators Ui 设计器为其无法识别的类创建插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425314/

相关文章:

c++ - 如何在 QT Framework 中的一个字符串中设置两种不同的样式

c++ - 如何在 Qt 4.8 Issues Tab 中显示 C++ 的所有警告?

c++ - std::map 中的线程安全

c++ - 派生类错误 'no type named my_data in <base class>'

c++ - std::vector Sprite 分割错误

c++ - 在 QImage 中使像素透明

c++ - "thread-safe"函数并行化框架是否依赖?

c++ - 从 std::vector<glm::vec3> 获取一个 float 类型的数组指针

c++ - 确定 OpenCV 中矩阵的类型

c++ - Cocos2d-x自定义内存模型有哪些优势?