activateWindow()不能激活窗口
一个窗口失去焦点以后不是应该调用raise();和activateWindow();就可以激活的吗?可是调用以后窗口就在那闪,要反复调几次才能让窗口获取鼠标焦点。#ifndef WIDGET_H
#define WIDGET_H
#include <QGraphicsView>
#include <QtWidgets>
class Widget : public QGraphicsView
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
private:
void enterEvent(QEvent *);
void leaveEvent(QEvent *);
void wheelEvent(QWheelEvent *);
private:
QGraphicsScene *m_GraScene;
QGraphicsRectItem *m_EItem;
};
#endif // WIDGET_H
#include "widget.h"
#define ACTIVETIMES 100
Widget::Widget(QWidget *parent)
: QGraphicsView(parent)
{
// setFocusPolicy(Qt::StrongFocus);
// setMouseTracking(true);
setFixedSize(300, 300);
setStyleSheet("background-color: green;");
setWindowFlags(/*Qt::FramelessWindowHint | */Qt::Tool | Qt::WindowStaysOnTopHint);
m_GraScene = new QGraphicsScene(this);
setScene(m_GraScene);
m_EItem = new QGraphicsRectItem(QRectF(50, 50, 200, 200), 0);
m_GraScene->addItem(m_EItem);
}
void Widget::enterEvent(QEvent *)
{
for(int i = 0; i < ACTIVETIMES; i++)
{
raise();
activateWindow();
show();
}
qDebug()<<"Im enter";
}
void Widget::leaveEvent(QEvent *)
{
qDebug()<<"Im leave";
}
void Widget::wheelEvent(QWheelEvent *e)
{
this->rotate(e->delta() / 5);
}
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
求易做图,怎么破>_< Qt 激活窗口 鼠标焦点 activateWindow --------------------编程问答-------------------- http://blog.csdn.net/rabinsong/article/details/8660783看看这个哦 --------------------编程问答--------------------
要用进程间通信吗@_@激活一个窗口这么复杂 --------------------编程问答-------------------- 没有,我只是给你一个激活窗口的例子,当然你可以通过其他方式激活哦,关键是showWindow的处理 --------------------编程问答-------------------- showWindow?是指要hide一下重新show出来才行吗? --------------------编程问答-------------------- 嗯,我是用这种方法来的,不这样做不行 --------------------编程问答-------------------- 嗯嗯,但是会界面会闪一下。很不友好的感觉。 --------------------编程问答-------------------- setGeometry(curGemRect); 通过该种方法试试,预先保存你的上一个窗口位置 --------------------编程问答-------------------- 好吧,还是感觉有时候能激活,有时候不行呢@_@都想死了。 --------------------编程问答-------------------- 使用这样的方法,
hide();
setGeometry();
show();
这个肯定行,也解决了闪 --------------------编程问答-------------------- 还是会闪一下啦。毕竟hide了然后再show。我考虑是不是用钩子来做好了。 --------------------编程问答-------------------- 你是说你的m_GraScene = new QGraphicsScene(this);
setScene(m_GraScene);
场景里的元素会闪吗
补充:移动开发 , Qt