我需要爲Qt應用程序創建幾個自定義事件類。是否有更簡潔的方式來註冊Qt自定義事件?
現在,它看起來像我將需要實現爲每個事件類中的下列事件類型註冊代碼:
class MyEvent : public QEvent
{
public:
MyEvent() : QEvent(registeredType())
{
}
static QEvent::Type eventType;
private:
static QEvent::Type registeredType();
}
QEvent::Type MyEvent::eventType = QEvent::None;
QEvent::Type MyEvent::registeredType()
{
if (eventType == QEvent::None)
{
int generatedType = QEvent::registerEventType();
eventType = static_cast<QEvent::Type>(generatedType);
}
return eventType;
}
我如何能簡化這一點,或至少有一個宏隱藏任何建議?
你也可以看看[this stackoverflow post](http://stackoverflow.com/a/8232397/5253471)。它對我很好。 – Francois 2015-12-16 18:19:17
@Francois是的,你已經鏈接到的答案提供了一個比這更優雅的解決方案,再加上這樣一個事實,即通常事件類型被定義爲常量,以防止事件超越事件。 – rbaleksandar 2017-02-04 15:44:14