[Qt-interest] QLabel buddy and Custom Widget.
NaGeL
nagel182 at gmail.com
Tue May 3 11:09:16 CEST 2011
Yes! Thank you!
All i had to do is set the Custom Widget's FocusPolicy to Qt::StrongFocus,
and with with and tell the widget with FocusProxy withch child widget to
handle it.. in my case the QtextEdit.
Thank you again!
2011/5/3 Bo Thorsen <bo at fioniasoftware.dk>
> Hi,
>
> The real work happens here:
>
> bool QLabel::event(QEvent *e)
> {
> Q_D(QLabel);
> QEvent::Type type = e->type();
>
> #ifndef QT_NO_SHORTCUT
> if (type == QEvent::Shortcut) {
> QShortcutEvent *se = static_cast<QShortcutEvent *>(e);
> if (se->shortcutId() == d->shortcutId) {
> QWidget * w = d->buddy;
> QAbstractButton *button = qobject_cast<QAbstractButton *>(w);
> if (w->focusPolicy() != Qt::NoFocus)
> w->setFocus(Qt::ShortcutFocusReason);
> if (button && !se->isAmbiguous())
> button->animateClick();
> else
> window()->setAttribute(Qt::WA_KeyboardFocusChange);
> return true;
> }
>
> You found the buddy attribute there, so you were almost there. You just had
> to run a search to find out what happens. "Happens" is usually in an event
> handler (mouse, change, etc.).
>
> If they wanted to, they could have implemented the mouse handlers as well,
> so mouseclicks would activate the buddy as well, but they have chosen not to
> do this.
>
> But I hope you have what you need now.
>
> Bo.
>
> Den 02-05-2011 18:33, NaGeL skrev:
>
>> I did. And i said i looked at the headers files, and now too.
>>
>> this is QLabel's setbuddy function:
>>
>> void QLabel::setBuddy(QWidget *buddy)
>> {
>> Q_D(QLabel);
>> d->buddy = buddy;
>> if (d->isTextLabel) {
>> if (d->shortcutId)
>> releaseShortcut(d->shortcutId);
>> d->shortcutId = 0;
>> d->textDirty = true;
>> if (buddy)
>> d->updateShortcut(); // grab new shortcut
>> d->updateLabel();
>> }
>> }
>>
>> what i understand from it is: its sets its buddy, and refreshes it
>> shourtcuts, the shortcut that will give focus to the widget.
>>
>> but this is what I'm asking.... how can i redirect the focus of the
>> shortcut to my Widget's QTextEdit?
>>
>> I figured its Q_PROPERTY thing like it was with the mapping question I
>> had... setFocus, setFocusProxy.. doesn't really works...
>>
>> 2011/5/2 Bo Thorsen <bo at fioniasoftware.dk <mailto:bo at fioniasoftware.dk>>
>>
>>
>> Den 01-05-2011 18:01, NaGeL skrev:
>>
>> Hello its the newb again.
>>
>> And now i would like to ask. How does QLAbel's buddy function
>> works?
>> And how can I get it to work with my Custom Widget?
>>
>> My Widget Contains several tool button and a QTextEdit.
>> I want to set QLabel's buddy the QTextEit, that is inside my
>> Custom Widget.
>>
>> is this too a Q_Property stuff? if yes how? i looked into the
>> QLabel's
>> header and QTextEdits header files but i failed to find any
>> indication...
>>
>>
>> I don't know this, but I know how I would find out: Read the Qt
>> sourcecode. This is a perfect case of a problem that most likely
>> will take you no longer than maximum 10 minutes to figure out by
>> looking at the QLabel sources.
>>
>> I'm not trying to be clever here. This is a tool I use very often,
>> and I think it's important to keep reminding people that it's
>> available.
>>
>> Bo Thorsen,
>> Fionia Software.
>>
>> --
>>
>> Expert Qt and C++ developer for hire
>> Contact me if you need expert Qt help
>> http://www.fioniasoftware.dk
>>
>>
>>
>
> Bo Thorsen,
> Fionia Software.
>
> --
>
> Expert Qt and C++ developer for hire
> Contact me if you need expert Qt help
> http://www.fioniasoftware.dk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110503/4de5d825/attachment.html
More information about the Qt-interest-old
mailing list