[kde-edu]: Problem with QVariant on Rocs project (help request)
Andreas Ramm
psychobrain at gmx.net
Thu Aug 14 22:11:56 CEST 2008
What does it say, when qDebug() <<
item->data(0,FileArea::ScriptRole).typeName()?
There might be a typedef somewhere which would cause problems so it's good to
get the type as QVariant sees it.
On Thu, 14 Aug 2008 10:01:04 pm Tomaz Canabrava wrote:
> well, that helped the program not-to-crash, but it still doesn't works.
> new code
>
> void FileArea::createNewScript()
> {
> KTextEditor::Editor *e = _mainWindow->editor();
> KTextEditor::Document* d = e -> createDocument(0);
> d->setMode("JavaScript");
> addScript(d->documentName(), d);
> }
>
> void FileArea::addScript(const QString& name, KTextEditor::Document* data)
> {
> QTreeWidgetItem *scriptItem = new QTreeWidgetItem(_scriptFolder,
> ScriptRole); scriptItem->setIcon(0, KIcon("file-new"));
> scriptItem->setText(0, name);
> scriptItem->setData(0, ScriptRole, data); // ScriptRole = UserType+1
> _mainWindow->changeActive(scriptItem);
> }
>
> void MainWindow::changeActive(QTreeWidgetItem * item)
> {
> switch(item->type())
> {
> case FileArea::ScriptRole : changeActiveScript(item); break; //
> UserType + 1
> case FileArea::GraphRole : changeActiveGraph(item); break; //
> UserType + 2
> }
> }
>
>
>
> void MainWindow::changeActiveScript(QTreeWidgetItem *item)
> {
> KTextEditor::Document *d = 0;
>
> //! NEVER GETS INSIDE OF THE IF.
> //! Cannot Convert the data to a KTextEditor::Document*
> //! But the data *IS* a KTextEditor::Document*
> //! =/ *frustrated*
>
> if
> (item->data(0,FileArea::ScriptRole).canConvert<KTextEditor::Document*>() )
> {
> d = item->data(0,
> FileArea::ScriptRole).value<KTextEditor::Document*>(); _scriptingArea ->
> setDocument( d );
> guiFactory()->addClient(_scriptingArea->view());
> }
>
> // _scriptingArea -> setDocument(0); outside of the if will work,
> // and create a new document, but I want to restore a previously created
> one. // any help is apreciated.
> }
>
> On Wed, Aug 13, 2008 at 4:33 PM, Andreas Ramm <psychobrain at gmx.net> wrote:
> > Try using item->data(0,
> > FileArea::ScriptRole)).value<KTextEditor::Document*>()
> > to access your data and item->data(0,
> > FileArea::ScriptRole)).canConvert<KTextEditor::Document*>() to check if
> > you actually have that type inside QVariant. Note the template syntax in
> > both of
> > those methods. Other helpful methods when dealing with QVariant are
> > type() and typeName() which help you finding out what a QVariant
> > contains.
> >
> > Andreas
> >
> > On Thu, 14 Aug 2008 02:52:48 am Tomaz Canabrava wrote:
> > > I'v spend all morning working on Rocs trying to implement a
> >
> > multi-document
> >
> > > panel interface,
> > > almost everything is good, but this little piece of code here is
> > > somewhat broken,
> > > my head hurts, anybody can show some light on this, pretty please, with
> > > sugar on top?
> > >
> > > void FileArea::createNewScript(){
> > > KTextEditor::Editor *e = _mainWindow->editor();
> > > KTextEditor::Document* d = e -> createDocument(0);
> > > d->setMode("JavaScript");
> > > addScript(d->documentName(), d);
> > > }
> > >
> > > void FileArea::addScript(const QString& name, KTextEditor::Document*
> >
> > data){
> >
> > > QTreeWidgetItem *scriptItem = new QTreeWidgetItem(_scriptFolder);
> > > scriptItem->setIcon(0, KIcon("file-new"));
> > > scriptItem->setText(0, name);
> > > scriptItem->setData(0, ScriptRole, data);
> > > _mainWindow->changeActive(scriptItem);
> > > }
> > >
> > > void MainWindow::changeActiveScript(QTreeWidgetItem *item){
> > > KTextEditor::Document *d = item->data(0, FileArea::ScriptRole));
> > > _scriptingArea->setDocument( d );
> > > guiFactory()->addClient(_scriptingArea->view());
> > > }
> > >
> > > ERROR:
> > >
> > > cannot convert 'QVariant' to 'KTextEditor::Document*' in initialization
> > > the line KTextEditor::Document *d = item->data(0,
> > > FileArea::ScriptRole)); gives me a QVariant,
> > > I'v tried to qobject_cast<KTextEditor*>(item->data(0,
> > > FileArea::ScriptRole)); but also without luck.
> > >
> > > Anybody can give-me some light? i'm stuck here almost all morning.
> >
> > _______________________________________________
> > kde-edu mailing list
> > kde-edu at mail.kde.org
> > https://mail.kde.org/mailman/listinfo/kde-edu
More information about the kde-edu
mailing list