aacid added a comment.
In D10792#226357 <https://phabricator.kde.org/D10792#226357>, @simgunz wrote: > I'm adding a new test to `parttest.cpp` because is the only test where there is the `part` component that allows me to access the `m_pageView`. > > I'm trying to call the public qslot: > > `part.m_pageView->openAnnotationWindow(annot1, 0);` > > but I get this error: > > `parttest.cpp:(.text+0x14d8d): undefined reference to PageView::openAnnotationWindow(Okular::Annotation*, int)` > > I've also cleaned the build dir and rerun cmake, and make but it still happens. > > Any idea? Yes, pageview is not an exported class so you can't really call it's methods because "they don't exist" for the linker. You have three posibilities: - Export the class, easiest, but i'd really like to avoid that - Since openAnnotationWindow is a slot, you should be able to use QMetaObject::invokeMethod to call it - instead of calling the method, just do what the user would do, i.e. simulate a click/double click in the correct places > Moreover, then I don't know how to access the opened annotation window. The reference is stored in `part->d->m_annowindows`, in the private class of PageView, which is not accessible from the tester I think. Right, but you can use QObject::findChild[ren] to look for AnnotWindow childs of m_pageView, that should be enough to get the pointer to the AnnotWindow. REPOSITORY R223 Okular REVISION DETAIL https://phabricator.kde.org/D10792 To: simgunz, #okular, aacid Cc: ngraham, #okular, michaelweghorn, aacid