[PyKDE] QTextBrowser & QMimeSourceFactory
Pete Ware
ware at cis.ohio-state.edu
Mon Apr 3 23:10:42 BST 2000
>
> The call to mimeSourceFactory().data() is what is failing inside the
> second setSource(), and this failing is caused by the first setSource().
>
> Looking at the comments in the Qt documentation for
> QMimeSourceFactory::data() I'd guess that this is just the way it works
> and not a PyQt problem.
>
> Phil
Hmm, I don't quite agree but I could easily be misunderstanding. The
mimeSourceFactory() should be providing a partial map between "href"'s
and the source. Here is the same example, but shortened. Looking at
the qt code, I don't see why doing a "setSource()" should change what
"data()" returns. Even looking at QMimeSourceFactoryData it seems
that the "last" member data keeps leaks from happening.
Output from the script:
1: <qt.QMimeSource instance at 1716b8>
2: <qt.QMimeSource instance at 171700>
3: None
Here is the code in qt/src/widgets/qtextbrowser.cpp:QTextBrowser::setSource()
if ( !source.isEmpty() && url != d->curmain ) {
const QMimeSource* m =
mimeSourceFactory()->data( source, context() );
QString txt;
if ( !m ){
qWarning("QTextBrowser: no mimesource for %s", source.latin1() );
}
else {
if ( !QTextDrag::decode( m, txt ) ) {
qWarning("QTextBrowser: cannot decode %s", source.latin1() );
}
}
--pete (mystified)
#! /usr/bin/env python
import qt
import sys
app = qt.QApplication (sys.argv)
main = qt.QMainWindow ()
text = qt.QTextBrowser (main)
name1 = qt.QString ('help-start.html')
text1 = qt.QString ('<b>this is a test</b>')
text.mimeSourceFactory().setText (name1, text1)
print '1: ', text.mimeSourceFactory().data(name1, text.context())
print '2: ', text.mimeSourceFactory().data(name1, text.context())
text.setSource (name1)
# No longer get any data back!
print '3: ', text.mimeSourceFactory().data(name1, text.context())
main.setCentralWidget (text)
app.setMainWidget (main)
main.show ()
app.exec_loop ()
More information about the PyQt
mailing list