因此,我希望在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大小的提示,我將非常感激。
謝謝,這很有幫助。不幸的是,這並沒有解決問題。事實上,事實證明這是一個QMacCocoaViewContainer問題;顯然,包裝的QTCaptureView根據CCaptureViewWidget/QMacCocoaViewContainer父級縮放,因此我應該使用setGeometry改爲調整CCaptureViewWidget。 – 2011-05-02 06:50:18