c++ - 连接来自另一个在 Qt 中不起作用的类的插槽

标签 c++ qt qt5 qt-signals qt-slot

我在 button.h 中有这个类:

class Buttons : public QObject
{
    Q_OBJECT
public:
    Buttons();
    QVector<QPushButton*> buttons;
public slots:
    void getBtnInfo();
};

mainwindow.cpp 中,我这样连接:

Buttons mButtons;
for(int i = 0; i < mButtons.buttons.size(); i++) {
    mButtons.buttons[i] = new QPushButton(mCentralWidget);
    ...
    connect(mButtons.buttons[i], SIGNAL(clicked(bool)), &mButtons, SLOT(getBtnInfo()));
}

它运行没有任何错误;但是 getBtnInfo() 插槽 似乎什么也没做。因为我试过只是在这个插槽中调试,没有工作。

但是如果我在 mainwindow.h 中声明 getBtnInfo() slot 并像这样连接:

connect(mButtons.buttons[i], SIGNAL(clicked(bool)), this, SLOT(getBtnInfo()));

然后就可以了。
我想知道为什么?以及如何解决上述问题?
谢谢。

最佳答案

如果一个变量是在一个函数中创建的,它只存在于该函数中,那么它将不可访问,这就是我认为正在发生的情况,我建议您使 mButtons 成为该类的成员。

*.h

private:
    Buttons mButtons;

关于c++ - 连接来自另一个在 Qt 中不起作用的类的插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47367129/

相关文章:

c++ - 取消引用空指针数组

c++ - 该代码应该返回不带空格的字符串,但它返回字符串直到第一个空格字符

c++ - C++ 类中的任意数据类型

Qt Creator - 如何将工具提示的背景颜色设置为与小部件不同?

qt - 无法使用 MSVC 2010 x86 构建 qt5.2.1 静态

c++ - 如何在 QTableView 小部件中显示来自 SQLite 数据库的表格?

C++ 编译器错误 c4430 "c++ doesnt support default int"

c++ - QSqlQuery 忽略 SQLite 数据库的排序顺序

c++ - 函数 sqlite3_open_v2 文件路径

c++ - 带有自定义模型的 QComboBox