Проверять на hasFocus()?
а хоть какие примеры?
Не знал, что hasFocus() не работает для dock )
Накидал такой простенький пример. Активное dock-окно -- то, по которому мы тыкнули.
C++ (Qt)
#include <QDockWidget>
#include <QTextEdit>
#include <QAction>
 
class MyMainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MyMainWindow() {
        te = new QTextEdit();
        te->setText("Yooh!");
 
        setCentralWidget(te);
 
        dw1 = new QDockWidget();
        dw2 = new QDockWidget();
        dw3 = new QDockWidget();
 
        dw1->installEventFilter(this);
        dw2->installEventFilter(this);
        dw3->installEventFilter(this);
 
        currentDockWidget = 0;
 
        addDockWidget(Qt::LeftDockWidgetArea, dw1);
        addDockWidget(Qt::RightDockWidgetArea, dw2);
        addDockWidget(Qt::RightDockWidgetArea, dw3);
 
        actionSetWindowTitleDock = new QAction("SetWindowTitleDock", this);
        connect(actionSetWindowTitleDock, SIGNAL(triggered()), SLOT(setWindowTitleDoc()));
 
        mainToolBar = addToolBar("main");
        mainToolBar->addAction(actionSetWindowTitleDock);
    }
 
private:
    QAction * actionSetWindowTitleDock;
 
    QToolBar * mainToolBar;
 
    QTextEdit * te;
 
    QDockWidget *dw1;
    QDockWidget *dw2;
    QDockWidget *dw3;
 
    QDockWidget * currentDockWidget;
 
private slots:
    void setWindowTitleDoc() {
        if (currentDockWidget)
            currentDockWidget->setWindowTitle(te->toPlainText());
    }
 
protected:
    bool eventFilter(QObject * obj, QEvent * e) {
        if (obj == dw1 || obj == dw2 || obj == dw3) {
            if (e->type() == QEvent::MouseButtonPress) {
                currentDockWidget = qobject_cast <QDockWidget *> (obj);
                return true;
            }
        }
 
        return QMainWindow::eventFilter(obj, e);
    }
};