Display a .dot file inside a Qt application - qt

I am new to Qt and C++... Now, I am writing an application in Qt, in which I have to display an already generated .dot file inside my application. I tried the render function but did not work for me.. Can anyone out there help me in this regard..
Thanks

Had the same problem using Python. I came up with this solution:
svg_string = dot_graph.create_svg(prog='dot')
svgWidget = QtSvg.QSvgWidget()
svgWidget.load(QtCore.QByteArray(svg_string))
Guess you can do something similar in C++

Plotting directly a dot file requires to be able to display the nodes in the correct positions, and link them properly. This is done by very complicated engines and is not included in the dot file, which is simply a description of the graph. Maybe there are C++/Qt libraries that take dot files as an input, but I don't know them.
According to this topic (Graphviz: How to go from .dot to a graph?), you can easily transform a dot file into a png or svg file. If you want to display the rendered graph into your application, the easiest thing to do is to generate that png picture (from the shell or from your code) and to manipulate it from your program.

Take a look to QGraph. You will need much more work to make your graphs interactive.
Anyway, if you are new to Qt, even the simple display it's a steep introduction to graphics.
I have my own implementation, but I'm sorry it's not yet ready for publishing - I will do in a SWI-Prolog context...

Related

Is there any method for fix manually an Alloy Analyzer graph?

I need to fix my Alloy graph, for example I have this output:
I can't move "node2" rectangle over the row of "node0" and "node1", and I can't move "node1" under "node2" whitout also move "node0". Is there any solution? Thank you.
PS: I am using Alloy Analyzer 4.2 under Windows.
PPS: This is only an example, i get a big graph with 5 or 6 rows of 20-25 rectangles, and if I can't fix it manually, it's only a mess.
To answer the direct question: I for one have never found a way to make the visualizer change its mind about which nodes should be on the same horizontal level. (That doesn't quite mean it's not possible, but it does mean that if it's possible it's not immediately obvious how to do it. But I guess you knew that already.)
If your goal is to make the auto-generated diagrams easier to read, the simplest approach is to experiment with adjustments to the visualizer theme. The "Magic Layout" button can be helpful; manual adjustments to hide some nodes or display some relations as labels rather than arcs can help with diagrams which are otherwise too cluttered.
If your goal is to make a 'good' version of a diagram for inclusion on a slide for a talk or a figure for a paper, you may want to export to Dot and import into a graph-drawing tool that gives you the kind of manual control you want (or edit the .dot file yourself, if you are familiar with graphviz and can make it do what you want), or export to XML and generate the graph description language of your choice from the XML.
I hope this helps.
The Lightning tool is an Ecplise plugin relying on Alloy4.2 to formally define Domain Specific Languages and might be a solution to your problem.
It's still under development, but if you are only interested in being able to freely reorganize each atom and label of generated instances, there shouldn't be any problems, as it uses Ecplise draw2D to render those latter.
If now you're really interested in providing an intuitive visualization to your generated instance (by intuitive I mean a visualization that is closer to its domain rather than the structure of your model), then you can define your own language (with your model as abstract syntax ) and define a concrete syntax for it.
The update site to be used for the installation of the tool is : http://lightning.gforge.uni.lu/update-site
Don't hesitate to contact me if you plan to give it a shot and get any issues.
(I'm eager of constructive feedbacks ;-) )
The steps to follow to generate a graphical instance in which any components can be moved are :
Install Lightning
Create a new Lightning Project
Create a new Language in this project
Put your model in the ASM folder
generate instances of the language by "running the project"

Displaying vector files in QT using GDAL/OGR

I am writing an application to load vector maps/shape files using gdal/ogr and display them onto a gui designed using Qt. I am new to dealing with vector files, I am not able to decide how to render them on GUI. Few approaches that come to my mind are:
- To convert vector files to raster and display them as raster..
- To draw each shape in vector file one by one (i dont know how to do this, I dont even know whether it would be even possible this using GDAL/OGR, or how complex this would be because in my case vector files can be very complex)
The decision how to render vector files is very important for me, because after displaying vector files i need to support some advanced features like projection change, interactive selection, Geo-referencing etc.
Can any one who has worked on vector/gis stuff, tell me how this is usually done and what Qt widget is used for displaying such data.
Displaying vectors is a tricky task since it requires rendering of geometries.
I would consider Quantum GIS (QGIS). It's actually also based on QT but comes with a sophisticated rendering engine. A custom QGIS application can even be run standalone.
I solved the problem of drawing vector files by writing rendering functions for each type of shape files. Qt's QPainter was really handy for drawing shapes like Polygon, Multipolygon, Line, Multiline and then displaying the output as QImage.

R statistics console in QT

I am planning to link a Qt project against R to provide some statistical funcionality. I thought it might be quite cute to add some generality to the project by having an R console as a Qt widget within the tab to allow me to do analyses that I haven't thought of in the design stage later on. I was wondering whether it is something that might be accomplished fairly easily?
In particular I'm stuck on how I would access the RTerm from QT? Has anyone else attempted something similar or can give some hints on where to start?
One of the examples for RInside does something pretty close---in around 200 lines most of which deal with the other GUI aspects, it wraps R functionality inside a Qt application.
The example implements a GUI density slider, and the edit box allows you to write an almost arbitrary R expression, or rather the parts that are then passed into an evaluation to generate random number: rnorm(50), or for a mixture c(rnorm(50), rt(50)) etc. You could possibly build on top of that.
See this blog post for more.
Check out Carson Farmer's work on manageR:
http://www.ftools.ca/manageR/
this is a plugin for Quantum GIS (mapping package) that interfaces it to R, giving you exactly what you want - an R console wrapped in a Qt4 body - as well as data transfer between Qgis and R. It handles plots as well.
I've tried to encourage Carson to produce a standalone R Gui project from this code, but he's a busy guy. Aren't we all?
RStudio is largely written using QT, you should be able to have a look at their code and build something similar into your Qt based application:
https://github.com/rstudio/rstudio

How do I create a Treemap and depict it through flex?

So basically what I'm trying to do is make something like this:
http://store.kapit.biz/demo/treemap/prod/index.html#
I've searched long and hard to find a site that would show me some pseudocode (at least) or an algorithm as to how to implement this type of application. But everything I find are only applications that take in data and do all the work for me to create the graph. I need to actually create it for myself, just a simple one for now. Does anyone know where I can find this? What I want it to do is take data from a database and use it to create the treemap, then express it in a GUI like in the link above. If any specifics are needed I can provide it. I'm trying to do this in Flash Builder using Flex and using ColdFusion as the backend. Thanks!
Check this out
Axiis is a open source library based on Degrafa that enables you to make complex data visualizations.
Cheers

What tool is this - or anyone got an alternative tool

I need to make a very simple drawing of a graph (NOT a chart but a graph, like in Dijkstra) with multiple nodes and multiple vertexes.
I once saw this guy using a tool where he wrote the data in notepad then compiled or something and then he had an svg to view in a browser - to me this should be the simplest tool to draw this graph in. Anyone know what this tool is? Or know a simple, open source/free tool to make simple graphes (need to be able to automatically rearrange it so it looks decent)
Cheers,
Try Graphviz:
http://www.graphviz.org/

Resources