1
我需要一些幫助! 在qt應用程序中,我有一箇中央控件。在這個中心部件中,我有一個QLabel
,另一個QWidget
。現在在gstreamer的幫助下,我可以從我的攝像頭獲取視頻並通過第二個小部件顯示它。現在的問題是我想把這個小部件的截圖放在標籤上。但我使用的方法只給了一個空白的屏幕。QWidget和xvimagesink問題!
我嘗試這樣做:
QPixmap wpix = QPixmap::grabWidget(ui->videoWidget,0,0,640,480);
ui->label->setPixmap(wpix);
這:
QPixmap wpix=QPixmap(ui->videoWidget->size());
wpix.fill(Qt::transparent);
ui->videoWidget->render(&wpix,QPoint(0,0),QRect(0,0,640,480),QWidget::DrawWindowBackground | QWidget::DrawChildren);
唯一可行的就是用grabWindow但在這裏,另一件事:
的grabWindow()函數從屏幕抓取像素,而不是從窗口獲取像素,即,如果有另一個窗口部分或全部位於您抓取的那個窗口之上,則會從中獲取像素>覆蓋窗口。
現在grabWindow()沒有用,因爲這個效果,並且上面的兩個方法不想工作!
有人可以告訴我什麼是問題。可能是事實,我設置videoWidget是一個nativeWindow(如果我沒有設置它,我的視頻流不會顯示)?
請幫忙!如果您需要更多信息,請告訴我!請原諒我的英文不好!
不需要在每一行放上'
'。只需選擇所有代碼,然後點擊代碼按鈕即可。 (文本塊的四個空格縮進被解釋爲代碼塊) – Nifle 2011-01-07 11:18:03
只發布大代碼塊不是(通常)非常有用。代碼之前的一個小解釋通常是正常的(和禮貌的)事情。 – Nifle 2011-01-07 11:19:38
好吧,我的壞。我已經發布了所有的代碼,因爲我認爲這將有助於更多?我已經在qt論壇上發佈這個問題,但迄今爲止沒有! – BlueEyes89 2011-01-07 13:46:08