2016-11-15 122 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(),它会发生什么? –

相关问题