#include "frmcall.h" #include "ui_frmcall.h" #include "head.h" frmCall::frmCall(QWidget *parent) : QWidget(parent), ui(new Ui::frmCall) { ui->setupUi(this); this->initForm(); QTimer::singleShot(100, this, SLOT(initDriveway())); } frmCall::~frmCall() { delete ui; } void frmCall::resizeEvent(QResizeEvent *) { #if 1 //根据界面高度设置视频窗体和车道窗体的比例 double width = (double)(this->width() - (3 * 9)) / 2; double height = this->height() - ui->widgetCall->height(); double heightVideo = height * ((double)3 / 5); double heightDriveway = height * ((double)2 / 5); ui->widgetVideo->setFixedHeight(heightVideo); ui->widgetDriveway->setFixedHeight(heightDriveway); ui->widgetDrivewayMainLeft->setFixedWidth(width); ui->widgetDrivewayMainRight->setFixedWidth(width); #endif } void frmCall::initForm() { //标题栏字体 QFont font; font.setPixelSize(40); font.setBold(true); ui->labVideoLeft->setFont(font); ui->labVideoRight->setFont(font); font.setPixelSize(20); ui->labVideoNameLeft->setFont(font); ui->labVideoNameRight->setFont(font); font.setPixelSize(15); ui->labDrivewayTitleLeft->setFont(font); ui->labDrivewayTitleRight->setFont(font); ui->widgetVideoLeft->setProperty("flag", "video"); ui->widgetVideoRight->setProperty("flag", "video"); ui->widgetDriveway->setProperty("flag", "driveway"); ui->widgetDrivewayMainLeft->setProperty("flag", "ring"); ui->widgetDrivewayMainRight->setProperty("flag", "ring"); ui->widgetCall->setProperty("flag", "call"); ui->labDrivewayIconLeft->setPixmap(QPixmap(":/image/left_title.png")); ui->labDrivewayIconRight->setPixmap(QPixmap(":/image/right_title.png")); } void frmCall::initDriveway() { resizeEvent(NULL); //根据设置的车道数量实例化动态生成车道 this->setLeftCount(3); this->setRightCount(3); } void frmCall::buttonClick() { QToolButton *btn = (QToolButton *)sender(); qDebug() << btn->objectName(); QString status = btn->property("status").toString(); if (status == "normal") { btn->setIcon(QIcon(":/image/ring_alarm.png")); btn->setProperty("status", "alarm"); } else { btn->setIcon(QIcon(":/image/ring_normal.png")); btn->setProperty("status", "normal"); } } void frmCall::setLeftCount(int count) { if (count == 0) { return; } //图标大小,可自行更改 int icoSize = 50; //根据数量自动计算图片宽度高度 int labWidth = ui->widgetDrivewayMainLeft->width(); int labHeight = ui->widgetDrivewayMainLeft->height(); labWidth = labWidth / count; this->leftCount = count; //自动生成车道和对应警灯 //先移除之前的对象,释放内存 qDeleteAll(leftWidgets); leftWidgets.clear(); for (int i = 0; i < count; i++) { QLabel *lab = new QLabel; lab->setObjectName(QString("labLeft%1").arg(i + 1)); lab->setAlignment(Qt::AlignCenter); QPixmap pix = QPixmap(":/image/left_bg.png"); //按照宽高比自动平滑缩放居中显示 pix = pix.scaled(labWidth, labHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation); lab->setPixmap(pix); QToolButton *btn = new QToolButton; btn->setObjectName(QString("btnLeft%1").arg(i + 1)); btn->setIcon(QIcon(":/image/ring_normal.png")); btn->setProperty("status", "normal"); btn->setIconSize(QSize(icoSize, icoSize)); connect(btn, SIGNAL(clicked(bool)), this, SLOT(buttonClick())); ui->gridLayoutLeft->addWidget(lab, 0, i); ui->gridLayoutLeft->addWidget(btn, 1, i, Qt::AlignCenter); leftWidgets << lab << btn; } } void frmCall::setRightCount(int count) { if (count == 0) { return; } //图标大小,可自行更改 int icoSize = 50; //根据数量自动计算图片宽度高度 int labWidth = ui->widgetDrivewayMainRight->width(); int labHeight = ui->widgetDrivewayMainRight->height(); labWidth = labWidth / count; this->rightCount = count; //自动生成车道和对应警灯 //先移除之前的对象,释放内存 qDeleteAll(rightWidgets); rightWidgets.clear(); for (int i = 0; i < count; i++) { QLabel *lab = new QLabel; lab->setObjectName(QString("labRight%1").arg(i + 1)); lab->setAlignment(Qt::AlignCenter); QPixmap pix = QPixmap(":/image/right_bg.png"); //按照宽高比自动平滑缩放居中显示 pix = pix.scaled(labWidth, labHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation); lab->setPixmap(pix); QToolButton *btn = new QToolButton; btn->setObjectName(QString("btnRight%1").arg(i + 1)); btn->setIcon(QIcon(":/image/ring_normal.png")); btn->setProperty("status", "normal"); btn->setIconSize(QSize(icoSize, icoSize)); connect(btn, SIGNAL(clicked(bool)), this, SLOT(buttonClick())); ui->gridLayoutRight->addWidget(lab, 0, i); ui->gridLayoutRight->addWidget(btn, 1, i, Qt::AlignCenter); rightWidgets << lab << btn; } } void frmCall::on_btnOn_clicked() { //实际为接听电话,这里暂时用作测试自定义车道数量 this->setLeftCount(2); } void frmCall::on_btnOff_clicked() { //实际为挂断电话,这里暂时用作测试自定义车道数量 this->setRightCount(4); }