qt - 是否可以通过const方法发出Qt信号?

标签 qt signals-slots

特别是,我正在为QWizard实现QWizardPage(“MyWizardPage”),并且我想从我对QWizardPage::nextId虚拟方法的重写中发出一个信号(“sigLog”)。

像这样:

class MyWizardPage
    : public QWizardPage
{
    Q_OBJECT
public:
    MyWizardPage();
    virtual int nextId() const;
Q_SIGNALS:
    void sigLog(QString text);
};

int MyWizardPage::nextId() const
{
    Q_EMIT sigLog("Something interesting happened");
}

但是,当我尝试这样做时,在Q_EMIT行上出现以下编译错误:

Error 1 error C2662: 'MyWizardPage::sigLog' : cannot convert 'this' pointer from 'const MyWizardPage' to 'MyWizardPage &'

最佳答案

通过在信号声明中添加“const”,可以从const方法发出信号,如下所示:

void sigLog(QString text) const;

我对此进行了测试,即使您自己实际上并未将信号实现为正常方法(即Qt可以使用它),也会编译并运行

关于qt - 是否可以通过const方法发出Qt信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5781449/

相关文章:

c++ - Qt 信号和槽 : permissions

c++ - 为什么我的插槽没有被调用?

android - 如何使用 Android 和 QT Creator 的 RTL SDR 库?

c++ - 在 Qt 中调整子部件大小后调整大小

qt - 如何本地化 Qt qmldir 插件?

qt - 在执行之间保留/序列化 QPrinter (QPrintDialog)

python - 如何在 pyqt 中为 QAction 重新实现 triggered() 信号?

python - 监听 pyqtBoundSignal 上的新信号连接

c++ - QObject::connect: 无法对 MyClass*const 类型的参数进行排队

qt - 如何使用 CMake 从 qmake 建模 OTHER_FILES?