调用func set setWindowFlags(Qt :: FramelessWindowHint)时没有触发qt paintEvent;和func winid

时间:2016-11-15 07:26:01

标签: qt paintevent

谢谢你的帮助〜 因为我需要在某个qlabel区域中使用directx(d3d)播放视频,所以我必须通过调用winid()方法获得标签winId。 但当我这样做时,出现了一些其他问题〜

当我使用FramelessWindowHint设置窗口边框时,当我调用anly winid()时,自定义按钮的paintEvent在调用updata()之后无法运行:

像那样:

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);
}

请帮助我,非常感谢!

1 个答案:

答案 0 :(得分:0)

我已经解决了,但我想也许这是Qt中的一个错误。

只是将调用winid()函数移出构造。它会有一个闪烁。