2016-11-15 31 views
1

感謝幫助我〜 ,因爲我需要在某個qlabel的區域使用directx(d3d)播放視頻,所以我必須通過調用winid()方法獲取標籤winId。 但是當我這樣做,其他一些問題出現〜qt paintEvent在調用func set時未觸發setWindowFlags(Qt :: FramelessWindowHint);和func winid

自定義按鈕的的paintEvent調用UPDATA()後無法運行,當我打電話ANLY winid()當我設定FramelessWindowHint窗口flage:

像即:

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    HWND hwnd = (HWND)(ui->label->winId());// here 
    setWindowFlags(Qt::FramelessWindowHint);// and here 
    QString playBackPre = "_playBack"; 
    //do my custom button init; the button will draw an pic when press ?enter or leave 
    ui->pushButton->setImages(playBackPre, 1); 
    ui->pushButton_2->setImages("_quanJin", 1); 
} 

請幫助我,非常感謝!

+0

對不起,我不清楚你在說什麼。 –

回答

0

我已經解決了它,但我想也許這是Qt中的一個錯誤。

只是將調用的winid()函數移出構造,並且它會有閃光。

+0

這是通過設計:正在構建的小部件尚不可見,因此沒有本機窗口標識符。本地窗口在顯示小部件後立即生效:事件循環將「QShowEvent」傳遞給小部件,然後可以查詢「winId()」。 –

+0

非常感謝,對我來說很有用。 –

+0

所以,如果我查詢winId(),它會發生什麼? –

相關問題