的論點我有這樣的類:的QObject ::連接:不能排隊MyClass類型* const的
#include <QObject>
namespace taservices
{
class ProcessHandle : public QObject
{
Q_OBJECT
public:
ProcessHandle(const void* const processContextPointer, const QString& process_id = "", QObject *parent = 0);
ProcessHandle();
signals:
void progress(const ProcessHandle* const self, const int value);
private:
static void registerAsMetaType();
}
我有一個信號:
void progress(const ProcessHandle* const self, const int value);
我想通過它連接QueuedConnedtion。我不斷收到這樣的信息:
QObject::connect: Cannot queue arguments of type 'ProcessHandle*const'
(Make sure 'ProcessHandle*const' is registered using qRegisterMetaType().)
註冊我的階級是這樣它的聲明後:
Q_DECLARE_METATYPE(taservices::ProcessHandle*);
我還添加了這是我從構造函數中調用靜態方法:
void ProcessHandle::registerAsMetaType()
{
static bool called = false;
if(!called) {
called = true;
qRegisterMetaType<ProcessHandle*>("taservices::ProcessHandle*");
}
}
我試圖註冊const
指針以及:
qRegisterMetaType<ProcessHandle*const>("taservices::ProcessHandle*const");
它會導致以下錯誤:
error C2440: 'return' : cannot convert from 'taservices::ProcessHandle *const *' to 'void *'
那麼,如何讓我的排隊連接類的工作?
的目的是保持在目標插槽的指針參數'const',因爲你不應該將其更改爲不同的地址。 –