Hi,

The fitInView works nice for me although i needed to perform some other 
transformation but I was able to utilize this function to achieve 
advance zooming so I guess i will stick to it, at least for now. I'm 
happy i didnt have to resort to QGLWidget.

Thank you very much :)

cheers,
D.
> Hi, Dawid.
>
> Dawid Sip wrote:
>> GraphicsView -pos(150,200) I can transform this down to the item and 
>> get somethink like pos(1250x1000). So I somehow need to adjust the 
>> projection. I think this is an issue of the viewport. I think I could 
>> achieve this by changing the viewport to QGLWidget and with help of 
>> some wrapper lib. like JOGL adjust the viewport/frustum, but I'd 
>> rather not use OpenGL in my application. So is this the only way or 
>> can I still do this with the default QWidget as viewport?
>>
>> Sow the question is: "How to show large pixmpa in a small viewport 
>> without loosing pixmap data"
>>
>> Could somebody please point me in the right direction?
>>
>
> The graphics view has the possibility of setting any transform/matrix 
> on it to alter how and which part of the scene is displayed. For your 
> particular case there is also a convenience method which sets the 
> correct scale on the view so that a specific item fits perfectly 
> inside it.
>
>    
> http://doc.trolltech.com/qtjambi-4.4.0_01/doc/html/com/trolltech/qt/gui/QGraphicsView.html#fitInView(com.trolltech.qt.gui.QGraphicsItemInterface)
>  
>
>
> I have attached a modification to the previous example of how you can 
> use this method to achieve what you need. Please make sure you set the 
> scrollbar policy of the view to no scrollbars in both vertical and 
> horizontal direction, though, otherwise you will get an infinite 
> stream of resize events as the scrollbars automatically switch on and 
> off.
>
> Hope this helps.
>
> -- Eskil
>
> ------------------------------------------------------------------------
>
> import com.trolltech.qt.core.Qt;
> import com.trolltech.qt.core.Qt.Orientation;
> import com.trolltech.qt.gui.*;
>
> class MyDockWidget extends QDockWidget {
>       
>       private static QPixmap pixmap = new 
> QPixmap("classpath:com/trolltech/images/qt-logo.png");
>       
>       int i=0;
>       public MyDockWidget() {         
>               QGraphicsScene scene = new QGraphicsScene();            
>               final QGraphicsPixmapItem item = scene.addPixmap(pixmap);
>                               
>               QGraphicsView view = new QGraphicsView() {
>                       
>                       @Override
>                       protected void resizeEvent(QResizeEvent e) {
>                               fitInView(item);
>                               super.resizeEvent(e);
>                       }
>                       
>               };      
>               
>               
> view.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff);
>               
> view.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff);
>               view.setScene(scene);
>
>               setWidget(view);                
>       }
>       
> }
>
> public class guiSplit extends QMainWindow{
>
>     Ui_guiSplitClass ui = new Ui_guiSplitClass();
>     QSplitter spliterV = new QSplitter(Orientation.Vertical);
>     QSplitter spliterH = new QSplitter(Orientation.Horizontal);
>     private int imageInCentralWidget = 0;
>     
>     public static void main(String[] args) {
>         QApplication.initialize(args);
>         guiSplit testguiSplit = new guiSplit();
>         testguiSplit.show();
>         QApplication.exec();
>     }
>     
>     public guiSplit(){
>         ui.setupUi(this);
>         
>         spliterV.addWidget(spliterH);
>         
>         QWidget w = new QWidget();        
>         QHBoxLayout layout = new QHBoxLayout(w);
>         layout.addWidget(spliterV);
>                 
>         setCentralWidget(w);
>     }
>     
>     public guiSplit(QWidget parent){
>       super(parent);
>         ui.setupUi(this);
>     }
>     
>     QDockWidget dockWid;
>     public void on_actionAddDockWid_triggered() {
>       if(imageInCentralWidget==3) return;
>       
>       System.err.println("\n\n\n");
>       dockWid = new MyDockWidget();
>         dockWid.setObjectName("dockWid"+(++imageInCentralWidget));
>         
> dockWid.setFeatures(com.trolltech.qt.gui.QDockWidget.DockWidgetFeature.createQFlags(com.trolltech.qt.gui.QDockWidget.DockWidgetFeature.NoDockWidgetFeatures));
>         QApplication.processEvents();
>         
>         switch(imageInCentralWidget){
>               case 1:
>                       spliterH.addWidget(dockWid);
>                       break;
>               case 2:
>                       spliterH.addWidget(dockWid);
>                       break;
>               case 3:
>                       spliterV.addWidget(dockWid);
>                       break;
>         }        
>     }
> }
>   

_______________________________________________
Qt-jambi-interest mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-jambi-interest

Reply via email to