2011-04-26 43 views
0

因此,我希望在Mac上有一个应用程序,通过iSight显示实时视频预览,同时允许用户拍摄快照。基本上,它类似于静态演示,除了现在我必须使它在Qt应用程序下工作。也就是说,我拥有大多数遵循C++结构的mm文件,偶尔会有Obj-c消息。 目前,我在将QTCaptureView与Qt模块的其余部分放在一起时遇到问题。调整嵌入在Qt应用程序中的QTCaptureView的尺寸

现在,我已经设法通过QMacCocoaViewContainer将它放到我的Qt gui中,并且希望将其调整到合适的大小;由于我们不能再使用Interface Builder,我必须以某种方式对其进行编码。我在创建它之后试图设置它的框架和边界,但它没有任何区别。

CCaptureViewWidget::CCaptureViewWidget(QWidget *parent) : 
    QMacCocoaViewContainer(0, parent) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

    NSRect kVideoFrame = NSMakeRect(100.0f, 100.0f, 400.0f, 300.0f); 
    QTCaptureView *camView = [[QTCaptureView alloc] initWithFrame:kVideoFrame];  
    [camView setFrame:kVideoFrame]; 
    [camView setBounds:kVideoFrame]; 

    NSRect ourPreviewBounds = [ camView previewBounds ]; 

    NSColor *pFillColor = [ [NSColor colorWithDeviceRed:0.0f green:1.0f blue:0.0f alpha:1.0f] copy]; 
    [camView setFillColor:pFillColor]; 

    [camView setPreservesAspectRatio:YES]; 
    [camView setNeedsDisplay:YES]; 

    setCocoaView(camView); 

    [camView release]; 
    [pool release]; 

} 

的ourPreviewBounds,据我可以从Xcode中debuger告诉,有一个尺寸为0x0的,即使在SETFRAME和调用的setBounds。只是为了证明camView是有效的,我确实设法改变了QTCaptureView的填充颜色。

我从源头上看到,重写QTCaptureView的previewBounds可能是一个选项,但我一直没有找到任何工作示例。

如果任何人都可以给我一个关于如何在接口生成器和代码内调整QTCaptureView大小的提示,我将非常感激。

回答

0
+0

谢谢,这很有帮助。不幸的是,这并没有解决问题。事实上,事实证明这是一个QMacCocoaViewContainer问题;显然,包装的QTCaptureView根据CCaptureViewWidget/QMacCocoaViewContainer父级缩放,因此我应该使用setGeometry改为调整CCaptureViewWidget。 – 2011-05-02 06:50:18