如何创建无焦点无边框响应鼠标事件的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();
}
这些东西我全用了,一样可以接受鼠标事件的,很奇怪 --------------------编程问答-------------------- 额 来学习下 --------------------编程问答--------------------
解决办法是:
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