Есть окно MyMainWindow, производное от QMainWindow. 
C++ (Qt)
class MyMainWindow: public QMainWindow
{
    Q_OBJECT
public slots:
    void sltGet(QString str);
};
 
У окна есть слот, вида
C++ (Qt)
void MyMainWindow::sltGet(QString str){
        QMessageBox::information(window(), tr("title"), str);
}
 
Есть второй поток, в который передается указатель на существующий экземпляр окна. Как в этом потоке выполнить вызов слота.
C++ (Qt)
void func(MyMainWindow* pWindow)
{
    pWindow->sltGet("Hello World");
}
 
Такой вариант не подходит, так как отрисовка окон происходит в GUI потоке, о чем свидетельствует екцепшин с красным крестиком в верхнем левом угле.  

 "Widgets must be created in GUI thread"
---------------------------------------------Сейчас пошел по второму варианту: объявил дополнительный сигнал и метод приема
C++ (Qt)
class MyMainWindow: public QMainWindow
{
    Q_OBJECT
public:
    void get(QString str);
public slots:
    void sltGet(QString str);
signals:
    void signGet(QString str);
};
 
MyMainWindow::MyMainWindow()
{
...
    connect(this,  SIGNAL(signGet(QString)),  this,  SLOT(sltGet(QString)));
...
}
 
void MyMainWindow::get(QString str){
        emit sltGet(str);
}
 
void MyMainWindow::sltGet(QString str){
        QMessageBox::information(window(), tr("title"), str);
}
 
void func(MyMainWindow* pWindow)
{
    pWindow->get("Hello World");
}
 
Собственно, хочется более элегантного решения чем я описал в последнем случае, а то много вторичного кода получается. Хочется, зная указатель на QT-объект, передать в GUI-поток, о том что был emit (вызов).