title: Is it safe to use *virtual* multiple inheritance if QObject is being derived from DIRECTLY?
body: <p>I understand that in general, multiple inheritance from <code>QObject</code>-derived classes (even <em>virtual</em> multiple inheritance) is not supported in Qt.</p>
  
  <p>I understand the reason to be (I think) that even in the virtual inheritance case, the Qt classes do not <em>themselves</em> virtually inherit from <code>QObject</code>.  For example, if you attempt to derive a class virtually from both <code>QWidget</code> and <code>QThread</code>, this is placing the virtual inheritance in an irrelevant place in the inheritance chain and you still wind up with two <code>QObject</code> instances.</p>
  
  <p>I therefore think it is safe, and supported in Qt, to use virtual inheritance where the ONLY Qt class being derived from is <code>QObject</code> itself.</p>
  
  <p>I have:</p>
  
  <pre><code>class Top : public QObject {};
  
  class Left : public virtual Top {};
  
  class Right : public virtual Top {};
  
  class Bottom : public Left, public Right {}; // Is this safe, and supported by Qt?
  </code></pre>
  
  <p>Note that instances of <code>Bottom</code> truly have only one instance of <code>Top</code> (and hence only one instance of <code>QObject</code>), so it seems that the rationale for avoiding multiple inheritance in Qt (even <em>virtual</em> multiple inheritance) does not apply here.</p>
  
  <p>The above construct nonetheless results in the Qt compiler warning <code>Class Bottom inherits from two QObject subclasses Left and Right. This is not supported!</code>.</p>
  
  <p>Am I correct?  Is it safe to ignore the Qt compiler warning in this specific scenario?  Is the above construct, involving virtual multiple inheritance <strong>directly</strong> from QObject, safe and supported in Qt?</p>