小编Ant*_*nov的帖子

为什么我不能从基类槽Qt调用虚函数

有人可以向我解释为什么在基类槽中没有调用重写的方法,而是我有一个基本版本的方法:

class ThreadsDispatcher : public QObject
{
   Q_OBJECT
   public:
      explicit ThreadsDispatcher(QObject *parent = 0);
      virtual ~ThreadsDispatcher();
      virtual void OnThreadFinished(IThreadable *pWorker);

   public slots:
      void slotThreadFinished(IThreadable *pWorker);
};

void ThreadsDispatcher::slotThreadFinished(IThreadable *pWorker)
{
   OnThreadFinished(pWorker);
}

void ThreadsDispatcher::OnThreadFinished(IThreadable *pWorker)
{
   qDebug << "Base method, class" << this->metaObject()->className();
}
Run Code Online (Sandbox Code Playgroud)

子类:

class CommandsQueueDispatcher : public ThreadsDispatcher
{
    Q_OBJECT
    public:
       explicit CommandsQueueDispatcher(CommandFactory* baseFactory, QObject *parent = 0);
       ~CommandsQueueDispatcher();
       void OnThreadFinished(IThreadable *pWorker);
};

 void CommandsQueueDispatcher::OnThreadFinished(IThreadable *pWorker)
 {
    qDebug << "Subclass method, class" << this->metaObject()->className();
 }
Run Code Online (Sandbox Code Playgroud)

在插槽中调用OnThreadFinished后,我得到:

Base method, …
Run Code Online (Sandbox Code Playgroud)

c++ qt

5
推荐指数
1
解决办法
1075
查看次数

标签 统计

c++ ×1

qt ×1