2011-04-26 57 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