Qt窗口嵌入
来源:互联网 发布:中金所待遇 知乎 编辑:程序博客网 时间:2024/05/17 20:29
创建一个QGraphicsProxyWidget 的子类CustomProxy
class CustomProxy : public QGraphicsProxyWidget
在子类中重写事件
#ifndef CUSTOMPROXY_H#define CUSTOMPROXY_H#include <QTimeLine>#include <QGraphicsProxyWidget>class CustomProxy : public QGraphicsProxyWidget{ Q_OBJECTpublic: explicit CustomProxy(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0); QRectF boundingRect() const Q_DECL_OVERRIDE; void paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE;protected: void hoverEnterEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) Q_DECL_OVERRIDE; bool sceneEventFilter(QGraphicsItem *watched, QEvent *event) Q_DECL_OVERRIDE; QVariant itemChange(GraphicsItemChange change, const QVariant &value) Q_DECL_OVERRIDE;private slots: void updateStep(qreal step); void stateChanged(QTimeLine::State); void zoomIn(); void zoomOut();private: QTimeLine *timeLine; bool popupShown; QGraphicsItem *currentPopup;};#endif // CUSTOMPROXY_H
窗口添加阴影效果
void CustomProxy::paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){ const QColor color(0, 0, 0, 64); QRectF r = windowFrameRect(); QRectF right(r.right(), r.top() + 10, 10, r.height() - 10); QRectF bottom(r.left() + 10, r.bottom(), r.width(), 10); bool intersectsRight = right.intersects(option->exposedRect); bool intersectsBottom = bottom.intersects(option->exposedRect); if (intersectsRight && intersectsBottom) { QPainterPath path; path.addRect(right); path.addRect(bottom); painter->setPen(Qt::NoPen); painter->setBrush(color); painter->drawPath(path); } else if (intersectsBottom) { painter->fillRect(bottom, color); } else if (intersectsRight) { painter->fillRect(right, color); } QGraphicsProxyWidget::paintWindowFrame(painter, option, widget);}
窗口变形
void CustomProxy::updateStep(qreal step){ QRectF r = boundingRect(); setTransform(QTransform() .translate(r.width() / 2, r.height() / 2) .rotate(step * 30, Qt::XAxis) .rotate(step * 10, Qt::YAxis) .rotate(step * 5, Qt::ZAxis) .scale(1 + 1.5 * step, 1 + 1.5 * step) .translate(-r.width() / 2, -r.height() / 2));}
使用 QGraphicsProxyWidget 加载需要嵌入的窗口
<pre name="code" class="cpp">QGraphicsScene scene.addItem(proxy);QGraphicsView view(&scene);view.show();
0 0
- Qt窗口嵌入
- Qt实现嵌入桌面的半透明窗口
- 把 Cocos2d 嵌入 Qt 窗口中(1)
- 把 Cocos2d 嵌入 Qt 窗口中(2)
- Qt实现半透明窗口 嵌入桌面
- QT:子窗口嵌入到父窗口,子窗口跟随父窗口 qdialog,qwidget
- QT:子窗口嵌入到父窗口,子窗口跟随父窗口 qdialog,qwidget
- 将QT窗口嵌入到MFC中的方案
- 把Qt 的窗口程序 嵌入到 MFC 的窗口程序中 实现思路
- 把Qt 的窗口程序 嵌入到 MFC 的窗口程序
- 《MFC&Qt混合编程》 part1 MFC对话框中嵌入Qt窗口控件
- Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
- Qt实现嵌入桌面的半透明窗口 [此博文包含图片]
- 在QT搭建的播放器外壳中嵌入SDL的窗口
- 将OSG嵌入QT窗口系统中,实现拖拽界面
- SDL窗体嵌入到MFC/QT窗口控件上的方法总结
- source insight 窗口嵌入
- 将窗口嵌入桌面
- 手把手教你做安豆计算器(七)-“关于”界面
- poj3026 bfs+prim
- iOS 开发中遇到的坑
- 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
- sql server 查看表的死锁和Kill 死锁进程
- Qt窗口嵌入
- Listview滑动时不加载数据,停下来时加载数据
- React Native ——环境配置
- ToLua学习笔记(八) Example 08 AccessingArray
- window平台安装 MongoDB
- error C3861: “time”: 找不到标识符
- 如何解决ScrollView嵌套ListView的冲突(一)
- WireShark无法嗅探无线网卡
- 百宝云注册码系统V2