有道云笔记持续更新:
文档:19.QWidget:子窗口显示在主窗口之外的...
链接:http://note.youdao.com/noteshare?id=6a3c0ae6c1df66d58ceadc20048d359b&sub=715B43B649EA4BD69BBC543D20351D5A
在项目开发中,我们可能会需要子窗体显示在主窗体之外的需求,但是qt是不支持的。
我自己在网上没找到办法,所以就自己按照自己的思路来了弄了个demo
可以利用(Qt::ToolTip)来设置子窗体属性来解决这个问题,但是需要注意的是这个属性的意思是将窗体显示在最最最上层,也就是不能隐藏。但是也不是没用办法。
啥也别说了我们需要改写一些事件来让它不是显示在最最最上传,直接上源码,你们都应该看得懂,看不懂的应该都碰不到这个问题,哈哈哈。
class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); QPushButton *m_btn; QWidget *m_subWidget;//子窗体 /*重写event事件,窗体失焦后自动隐藏*/ bool event(QEvent *event); /*遍历主窗口或子窗口,判断是否被聚焦*/ bool isFocused(); private: Ui::Widget *ui; public slots: void |