当前位置:   article > 正文

Qt实现类似ToDesk顶层窗口 & 不规则按钮_实现 类似todesk

实现 类似todesk

先看效果:

在进行多进程开发时,可能会遇到需要进行全局弹窗的需求。

因为平时会使用ToDesk进行远程桌面控制,在电脑被控时,ToDesk会在右下角进行一个顶层窗口的提示,效果如下:

 其实要实现顶层窗口,最关键的是设置窗口属性:

setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);

同时一般也不太需要Windows状态栏的图标,我们可以这样,加一个Qt::Tool上去:

setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool);

动画效果的使用,会使程序的呈现更加奈斯:

  1. // 初始化
  2. {
  3. moveAnimation_ = new QPropertyAnimation(this,"pos",this);
  4. QScreen *primaryScreen = QGuiApplication::primaryScreen();
  5. if(primaryScreen==nullptr) { return; }
  6. geometry=primaryScreen->availableGeometry();
  7. this->move(geometry.width()-300-pix_right_.width(),geometry.height()-200);
  8. setFixedSize(300+pix_right_.width(), 200);
  9. }
  10. // 调用
  11. {
  12. QString imageName = is_expanded_ ? "right" : "left";
  13. QPoint showPoint = QPoint(geometry.width()-300-pix_right_.width(),geometry.height()-200);
  14. QPoint hidePoint = QPoint(geometry.width()-pix_right_.width(),geometry.height()-200);
  15. if(is_expanded_) {
  16. startAnimation(showPoint, hidePoint);
  17. btn_->setMask(pix_right_.mask());
  18. } else {
  19. startAnimation(hidePoint, showPoint);
  20. btn_->setMask(pix_left_.mask());
  21. }
  22. }
  23. // target目标点,oldpos起始点
  24. void AssistDlg::startAnimation(QPoint target, QPoint oldpos)
  25. {
  26. moveAnimation_->setDuration(300);
  27. moveAnimation_->setStartValue(oldpos);
  28. moveAnimation_->setEndValue(target);
  29. moveAnimation_->setEasingCurve(QEasingCurve::OutCubic);
  30. moveAnimation_->start();
  31. }

不规则按钮的主要代码如下:

  1. btn_ = new QPushButton(this);
  2. btn_->setFixedSize(pix_right_.size());
  3. btn_->setMask(pix_right_.mask());
  4. btn_->setStyleSheet("background-image: url(:/images/right.png)");
  5. btn_->setStyleSheet("QPushButton{"
  6. "border-image:url(:/images/right.png)}"
  7. );
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/844934
推荐阅读
相关标签
  

闽ICP备14008679号