大屏是按照底层为地图,上层为数据展示设计,且底层的地图为铺满状态,上层为半透明状态,用两层widget进行设计,后来发现这样就无法选中地图,该方法行不通,这里记录一下该方法的实现,后边再想其他方法。(各路大佬可以指导一下这种情况用哪种方式好一些)
效果图:
QT实现:
底层填充了一个离线地图,上层将widget背景设置为透明,增加布局,在布局中各个区域中添加widget用于展示不同数据。
wdDown = new QWidget();
//底层只填充一个地图
mapBaidu = new BaiduMap();
layDown = new QGridLayout(wdDown);
layDown->setColumnStretch(0,1);
layDown->setRowStretch(0,1);
layDown->addWidget(mapBaidu->map);
wdDown->setLayout(layDown);
//顶层进行数据展示
wdUp = new QWidget(this);
wdUp->setStyleSheet("background-color: rgb(255, 255, 255, 0);");
QGridLayout *layUp = new QGridLayout(wdUp);
layUp->setColumnStretch(0,1);
layUp->setColumnStretch(1,1);
layUp->setRowStretch(0,1);
layUp->setRowStretch(1,1);
QWidget* wd2Left = new QWidget();
wd2Left->setStyleSheet("background-color: rgb(200, 0, 0, 80);");
layUp->addWidget(wd2Left);
wdUp->setLayout(layUp);
QStackedLayout * sBoxLayout = new QStackedLayout(this);
sBoxLayout->setStackingMode(QStackedLayout::StackAll);
sBoxLayout->addWidget(wdDown);
sBoxLayout->addWidget(wdUp);
wdDown->stackUnder(wdUp);