2016-11-15 11 views
1

助けてくれてありがとう〜 qlabelのエリアでdirectx(d3d)を使ってビデオを再生する必要があるので、winid()メソッドを呼び出してwinIdというラベルを取得する必要があります。 しかし、私はこれを行うときに私はanly winid(呼び出すときに、他のいくつかの問題が登場〜qt paintEventはfunc setを呼び出すときにトリガされませんsetWindowFlags(Qt :: FramelessWindowHint); and func winid

カスタムボタンのpaintEventは)(コール・アップデータの後に実行することはできません)私は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()funcをconstruction.andから外してglintになります。

+0

これは仕様によるものです。構築中のウィジェットはまだ表示されていないため、固有のウィンドウ識別子はありません。ネイティブウィンドウは、ウィジェットが表示された直後に表示されます。イベントループは 'QShowEvent'をウィジェットに渡すので、' winId() 'に問い合わせることができます。 –

+0

ありがとう、それは私には便利です。 –

+0

ですから、もし私がwinId()を問い合わせると、どうなりますか? –

関連する問題