当前位置:编程学习 > wap >>

如何创建无焦点无边框响应鼠标事件的widget?

一个浮动于QTextEdit上的辅助窗口,要求无焦点(show的时候不影响输入)无边框,但是要响应鼠标事件。

目前代码如下:

this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_Disabled, false);
this->setAttribute(Qt::WA_TransparentForMouseEvents, false);
this->setFocusPolicy(Qt::NoFocus);
this->setMouseTracking(true);

只是无焦点无边框,但是鼠标无论也不响应,mousePressEvent进不去。上面的滚动条也点击无响应。

如何解决?

谢谢。
--------------------编程问答-------------------- 这么久了没人回答?自顶一下…… --------------------编程问答-------------------- 我记得Qt::FramelessWindowHint会导致窗口非active,无法接受按键事件。
lz要无边框的话还是换个方法吧~ --------------------编程问答-------------------- 我也用了Qt::FramelessWindowHint, 点击鼠标拖动什么的就没有用了,重写了dragMoveEvent也没有效果,不知道怎么解决。 --------------------编程问答-------------------- int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    FramelessWidget w;
    w.setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
    w.setFocusPolicy(Qt::NoFocus);
    w.setAttribute(Qt::WA_Disabled, false);
    w.setAttribute(Qt::WA_TransparentForMouseEvents, false);
    w.show();

    return a.exec();
}

这些东西我全用了,一样可以接受鼠标事件的,很奇怪 --------------------编程问答-------------------- 额 来学习下 --------------------编程问答--------------------
引用 3 楼 hitxiaya 的回复:
我也用了Qt::FramelessWindowHint, 点击鼠标拖动什么的就没有用了,重写了dragMoveEvent也没有效果,不知道怎么解决。


解决办法是:

void yourwindow::mousePressEvent(QMouseEvent *event){ 
   this->windowPos = this->pos(); 
   this->mousePos = event->globalPos();
   this->dPos = mousePos - windowPos;
 }
 
void yourwindow::mouseMoveEvent(QMouseEvent *event){ 
   this->move(event->globalPos() - this->dPos);
}
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,