WindowRuntimeView.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "WindowRuntimeView.h"
  2. #include "WindowAppDesignerView.h"
  3. #include "selectwidget.h"
  4. WindowRuntimeView::WindowRuntimeView(QWidget *parent)
  5. : QWidget(parent)
  6. {
  7. // 初始化Logo贴图
  8. this->initLogoImage();
  9. }
  10. WindowRuntimeView::~WindowRuntimeView()
  11. {
  12. }
  13. /// <summary>
  14. /// 初始化Logo贴图
  15. /// </summary>
  16. void WindowRuntimeView::initLogoImage()
  17. {
  18. m_pLogoImage = new QPixmap(64, 64);
  19. m_pLogoImage->load("./image/logo64.png");
  20. }
  21. /// <summary>
  22. /// 发布对应的页面
  23. /// </summary>
  24. /// <param name="pPage"></param>
  25. /// <param name="bMainPage"></param>
  26. /// <returns></returns>
  27. bool WindowRuntimeView::runPage(WindowAppDesignerView* pPage, bool bMainPage /* = false */)
  28. {
  29. // 首先创建一个等尺寸的窗体
  30. // 枚举该页面所有的控件,照着复制一份到Runtime窗体中
  31. QList<SelectWidget*> pControls = pPage->getAllControls();
  32. // 如果不是主页的话,界面先不显示,等着从主页切换时才显示
  33. return true;
  34. }
  35. /// <summary>
  36. /// 绘制界面背景
  37. /// </summary>
  38. /// <param name=""></param>
  39. void WindowRuntimeView::paintEvent(QPaintEvent*)
  40. {
  41. QRect rc = this->geometry();
  42. // 在当前界面的右上角显示logo
  43. QPainter painter(this);
  44. painter.drawPixmap(rc.right() - 100, rc.top(), 64, 64, *m_pLogoImage);
  45. }
  46. /// <summary>
  47. /// 启动所有的UI界面(目前先只支持启动所有页面的方式)
  48. /// </summary>
  49. void WindowRuntimeView::runAll(
  50. WindowAppDesignerView* pMainPage,
  51. QHash<QString, WindowAppDesignerView*> allPages
  52. )
  53. {
  54. // 首先发布主页
  55. runPage(pMainPage);
  56. // 根据每一个 WindowAppDesignerView 生成对应的页面,并且把所有的控件都分布上去
  57. QHashIterator<QString, WindowAppDesignerView*> it(allPages);
  58. while (it.hasNext())
  59. {
  60. runPage(it.next().value());
  61. }
  62. }