#include "QtCameraWidget.h"
#include "ui_QtCameraWidget.h"
QtCameraWidget::QtCameraWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::QtCameraWidget)
{
ui->setupUi(this);
m_camera = NULL;
m_btnSwitchState = true;
m_btnRecordState = false;
m_curCameraFormat.frameRate = -1;
m_curCameraFormat.w = -1;
m_curCameraFormat.h = -1;
//画面背景为黑色
QPalette backGround;
backGround.setColor(QPalette::Background, Qt::black);
ui->label->setAutoFillBackground(true);
ui->label->setPalette(backGround);
//关闭摄像头时提示“NO SIGNAL”
m_warnLabel = new QLabel(ui->label);
m_warnLabelLayout = new QHBoxLayout;
m_warnLabelLayout->addStretch();
m_warnLabelLayout->addWidget(m_warnLabel);
m_warnLabelLayout->addStretch();
ui->label->setLayout(m_warnLabelLayout);
QFont labelFont;
labelFont.setBold(true);
labelFont.setItalic(true);
labelFont.setPointSize(30);
QPalette warnPalette;
warnPalette.setColor(QPalette::WindowText, Qt::white);
warnPalette.setColor(QPalette::Background, Qt::black);
m_warnLabel->setAutoFillBackground(true);
m_warnLabel->setPalette(warnPalette);
m_warnLabel->setText("NO SIGNAL");
m_warnLabel->setFont(labelFont);
m_warnLabel->setVisible(false);
//function layout
m_pushBtnSwitch = new ToolButton(ui->label_tools);
m_pushBtnCapture = new ToolButton(ui->label_tools);
m_pushBtnRecord = new ToolButton(ui->label_tools);
m_pushBtnInfo = new ToolButton(ui->label_tools);
m_pushBtnSetting = new ToolButton(ui->label_tools);
m_pushBtndeviceSelect = new ToolButton(ui->label_tools);
m_toolsHLayout = new QHBoxLayout;
m_toolsHLayout->addStretch();
m_toolsHLayout->addWidget(m_pushBtnSwitch);
m_toolsHLayout->addWidget(m_pushBtnCapture);
m_toolsHLayout->addWidget(m_pushBtnRecord);
m_toolsHLayout->addWidget(m_pushBtnSetting);
m_toolsHLayout->addWidget(m_pushBtnInfo);
m_toolsHLayout->addWidget(m_pushBtndeviceSelect);
m_toolsHLayout->addStretch();
m_toolsHLayout->setMargin(0);
ui->label_tools->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
ui->label_tools->setLayout(m_toolsHLayout);
// ui->label->setScaledContents(true);
//set icon
m_pushBtnSwitch->setText("开关");
m_pushBtnSwitch->setIcon(QPixmap(":/icon/images/OpenCamera.png"));
m_pushBtnCapture->setText("拍照");
m_pushBtnCapture->setIcon(QPixmap(":/icon/images/Capture.png"));
//TODO:录制功能
m_pushBtnRecord->setEnabled(false);
m_pushBtnRecord->setText("录制");
m_pushBtnRecord->setIcon(QPixmap(":/icon/images/RecordStart.png"));
m_pushBtnSetting->setText("设置");
m_pushBtnSetting->setIcon(QPixmap(":/icon/images/Setting.png"));
m_pushBtnInfo->setText("信息");
m_pushBtnInfo->setIcon(QPixmap(":/icon/images/Info.png"));
m_pushBtndeviceSelect->setText("设备");
m_pushBtndeviceSelect->setIcon(QPixmap(":/icon/images/DeviceSelect.png"));
//infoDialog
m_infoDialog = new InfoDialog(this);
m_infoDialog->setFixedSize(180, 200);
QPalette infoPalette;
infoPalette.setColor(QPalette::WindowText, Qt::white);
m_formatLabel = new QLabel(m_infoDialog);
m_resolutionLabel = new QLabel(m_infoDialog);
m_frameRateLabel = new QLabel(m_infoDialog);
m_btnInfoDialog = new QPushButton(m_infoDialog);
m_formatLabel->setPalette(infoPalette);
m_resolutionLabel->setPalette(infoPalette);
m_frameRateLabel->setPalette(infoPalette);
m_formatLabel->setFixedSize(m_infoDialog->width(), 30);
m_resolutionLabel->setFixedSize(m_infoDialog->width(), 30);
m_frameRateLabel->setFixedSize(m_infoDialog->width(), 30);
m_btnInfoDialog->setText("确认");
m_formatLabel->move(5, 10);
m_resolutionLabel->move(5, 45);
m_frameRateLabel->move(5, 80);
m_btnInfoDialog->setGeometry(10, m_infoDialog->height() - 40, 160, 30);
//deviceDialog
m_devicesDialog = new InfoDialog(this);
m_deviceList = new QListWidget(m_devicesDialog);
m_btnCancelDeviceSelect = new QPushButton(m_devicesDialog);
m_btnApplyDeviceSelect = new QPushButton(m_devicesDialog);
m_devicesDialog->setFixedSize(180, 200);
m_deviceList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_deviceList->setFrameShape(QListWidget::NoFrame);
m_deviceList->setStyleSheet("color : white; background-color : rgb(60, 60, 60)");
m_deviceList->setMaximumSize(m_devicesDialog->width(), m_devicesDialog->height() - 60);
m_deviceList->setMinimumSize(m_devicesDialog->width(), m_devicesDialog->height() - 60);
m_deviceList->move(0, 10);
m_btnCancelDeviceSelect->setText("取消");
m_btnApplyDeviceSelect->setText("确认");
m_btnApplyDeviceSelect->setGeometry(10, m_devicesDialog->height() - 40, 77, 30);
m_btnCancelDeviceSelect->setGeometry(93, m_devicesDialog->height() - 40, 77, 30);
//settingDialog
m_settingDialog = new InfoDialog(this);
m_formatGroupBox = new QGroupBox(m_settingDialog);
m_resolutionGroupBox = new QGroupBox(m_settingDialog);
m_formatBox = new QComboBox(m_formatGroupBox);
m_resolutionBox = new QComboBox(m_resolutionGroupBox);
m_btnApplySettingDialog = new QPushButton(m_settingDialog);
m_btnCancelSettingDialog = new QPushButton(m_settingDialog);
m_filePathLabel = new QLabel(m_settingDialog);
m_fmtBoxLayout = new QHBoxLayout;
m_resolutionBoxLayout = new QHBoxLayout;
QPalette textColor;
textColor.setColor(QPalette::WindowText, Qt::white);
m_formatGroupBox->setPalette(textColor);
m_resolutionGroupBox->setPalette(textColor);
m_filePathLabel->setPalette(textColor);
//setting text
m_settingDialog->setFixedSize(330, 180);
m_formatGroupBox->setTitle("图像格式");
m_resolutionGroupBox->setTitle("分辨率");
m_btnApplySettingDialog->setText("确认");
m_btnCancelSettingDialog->setText("取消");
//functionArea layout
m_formatGroupBox->setGeometry(10, 10, 152, 80);
m_resolutionGroupBox->setGeometry(168, 10, 152, 80);
m_filePathLabel->setGeometry(10, 85, 310, 50);
m_btnApplySettingDialog->setGeometry(10, 140, 152, 30);
m_btnCancelSettingDialog->setGeometry(168, 140, 152, 30);
m_fmtBoxLayout->addWidget(m_formatBox);
m_formatGroupBox->setLayout(m_fmtBoxLayout);
m_resolutionBoxLayout->addWidget(m_resolutionBox);
m_resolutionGroupBox->setLayout(m_resolutionBoxLayout);
//signals and slots:
connect(m_pushBtnSwitch, SIGNAL(clicked()), this, SLOT(btnSwitchClicked()));
connect(m_pushBtnCapture, SIGNAL(clicked()), this, SLOT(btnCpatureClicked()));
connect(m_pushBtnRecord, SIGNAL(clicked()), this, SLOT(btnRecordClicked()));
connect(m_pushBtnInfo, SIGNAL(clicked()), this, SLOT(btnInfoClicked()));
connect(m_pushBtnSetting, SIGNAL(clicked()), this, SLOT(btnSettingClicked()));
connect(m_btnInfoDialog, SIGNAL(clicked()), this, SLOT(btnOkInfoClicked()));
connect(m_pushBtndeviceSelect, SIGNAL(clicked()), this, SLOT(btnDeviceSelect()));
connect(m_btnCancelSettingDialog, SIGNAL(clicked()), this, SLOT(btnCancelSettingClicked()));
connect(m_btnApplySettingDialog, SIGNAL(clicked()), this, SLOT(btnApplySettingClicked()));
connect(m_btnCancelDeviceSelect, SIGNAL(clicked()), this, SLOT(btnCancelDeviceClicked()));
connect(m_btnApplyDeviceSelect, SIGNAL(clicked()), this, SLOT(btnApplyDeviceClicked()));
//camera device
m_camera = new QtCamera;
connect(m_camera, SIGNAL(onImageOutput(QImage)), this, SLOT(showImage(QImage)));
m_camera->start();
if (! m_camera->isStarted()) {
m_warnLabel->setVisible(true);
return;
}
m_cam
- 1
- 2
前往页