Qt Whats This используя ссылку / якорь - PullRequest
4 голосов
/ 06 сентября 2011

Как я могу поставить привязку <a> в whatsThis для виджета, перехватывающего щелчок?

Я знаю о linkActivated в QLabel или linkClicked в QTextBrowser,но я не знаю, как я могу сделать то же самое с текстом Whats This.

Чтобы было ясно, я хочу знать, возможно ли это без перехвата справочных событий и управления механизмом WhatsThis самостоятельно.

Ответы [ 2 ]

6 голосов
/ 06 сентября 2011

Если я понимаю ваш вопрос, это то, что вы хотите знать, есть ли SIGNAL() для этого.Там, похоже, нет.Кажется, вам нужно следить за QWhatsThisClickedEvent, создав собственный класс Widget или с каким-то глобальным фильтром:

http://qtcentre.org/archive/index.php/t-7394.html

FYI, фактическая точка, где QWhatsThisClickedEventиспущено в источниках Qt здесь:

http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/kernel/qwhatsthis.cpp#line264

2 голосов
/ 26 марта 2013

Ответ HostileFork в значительной степени на деньги. Один простой подход, который может работать, если у вас нет виджетов, которые сами ловят события WhatsThisClicked, - это прослушивать события WhatsThisClicked в виджете вашего главного окна. Код довольно прост, что-то вроде следующего:

bool  MyMainWindow::event(QEvent* ev)
{
    if (ev->type() == QEvent::WhatsThisClicked)
    {
        ev->accept();
        QWhatsThisClickedEvent* whatsThisEvent = dynamic_cast<QWhatsThisClickedEvent*>(ev);
        assert(whatsThisEvent);
        QDesktopServices::openUrl(whatsThisEvent->href());
        return true;
    }
    return QMainWindow::event(ev);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...