是否可以从const方法发出Qt信号?

Dat*_*ham 31 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");
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这个时,我在Q_EMIT行上得到以下编译错误:

错误1错误C2662:'MyWizardPage :: sigLog':无法将'this'指针从'const MyWizardPage'转换为'MyWizardPage&'

Dat*_*ham 52

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

void sigLog(QString text) const;
Run Code Online (Sandbox Code Playgroud)

我测试了这个并且它确实编译并运行,即使你实际上没有自己实现信号作为常规方法(即Qt没问题).