|
@@ -7,9 +7,11 @@ ControlOperationPage::ControlOperationPage(QWidget* parent)
|
|
|
, ui(new Ui::ControlOperationPage)
|
|
|
{
|
|
|
ui->setupUi(this);
|
|
|
+ m_isEnable = false;
|
|
|
|
|
|
|
|
|
InitWnd();
|
|
|
+ initForm();
|
|
|
}
|
|
|
|
|
|
ControlOperationPage::~ControlOperationPage()
|
|
@@ -22,15 +24,21 @@ void ControlOperationPage::updateOperateWidget(const QPixmap& pixmap) {
|
|
|
QPixmap scaledPixmap = pixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
|
|
|
|
|
clearLayout();
|
|
|
-
|
|
|
- ui->Operatewidget->setPixmap(scaledPixmap);
|
|
|
+ ImageView* customView = new ImageView(ui->Operatewidget);
|
|
|
+ customView->setPixmap(scaledPixmap);
|
|
|
+ QVBoxLayout* layout = new QVBoxLayout(ui->Operatewidget);
|
|
|
+ layout->setContentsMargins(0, 0, 0, 0);
|
|
|
+ layout->addWidget(customView);
|
|
|
+ ui->Operatewidget->setLayout(layout);
|
|
|
+
|
|
|
m_currentPixmap = scaledPixmap;
|
|
|
m_scaleFactor = 1.0;
|
|
|
m_previousScaleFactor = 1.0;
|
|
|
ui->label_Percentage->setText("100%");
|
|
|
|
|
|
- m_currentMode = ModeImage;
|
|
|
-
|
|
|
+ //m_currentMode = ModeImage;
|
|
|
+ m_currentImageView = customView;
|
|
|
+ applyScale();
|
|
|
}
|
|
|
|
|
|
void ControlOperationPage::setDataSources(const QStringList& textList) {
|
|
@@ -85,15 +93,12 @@ void ControlOperationPage::updateScale(double newScaleFactor)
|
|
|
// 应用缩放
|
|
|
void ControlOperationPage::applyScale()
|
|
|
{
|
|
|
- if (m_currentMode == ModeImage)
|
|
|
+ if (m_currentMode == ModeImage && m_currentImageView)
|
|
|
{
|
|
|
// 图片模式:缩放图片
|
|
|
- int newWidth = m_currentPixmap.width() * m_scaleFactor;
|
|
|
- int newHeight = m_currentPixmap.height() * m_scaleFactor;
|
|
|
-
|
|
|
- QPixmap scaledImage = m_currentPixmap.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
|
|
- ui->Operatewidget->setPixmapAndPoint(scaledImage, m_previousScaleFactor, m_scaleFactor, m_mousePos);
|
|
|
- m_previousScaleFactor = m_scaleFactor;
|
|
|
+ QTransform transform;
|
|
|
+ transform.scale(m_scaleFactor, m_scaleFactor);
|
|
|
+ m_currentImageView->setTransform(transform);
|
|
|
}
|
|
|
else if (m_currentMode == ModeView && m_currentView)
|
|
|
{
|
|
@@ -110,10 +115,11 @@ void ControlOperationPage::applyScale()
|
|
|
}
|
|
|
|
|
|
void ControlOperationPage::handleDoubleClick() {
|
|
|
- if (m_currentMode == ModeImage)
|
|
|
+ if (m_currentMode == ModeImage && m_currentImageView)
|
|
|
{
|
|
|
- QPixmap scaledImage = m_currentPixmap.scaled(m_currentPixmap.width(), m_currentPixmap.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
|
|
- ui->Operatewidget->setPixmap(scaledImage); // 这里传递缩放后的图片
|
|
|
+ QTransform transform;
|
|
|
+ transform.scale(1, 1);
|
|
|
+ m_currentImageView->setTransform(transform);
|
|
|
}
|
|
|
else if (m_currentMode == ModeView && m_currentView)
|
|
|
{
|
|
@@ -232,7 +238,7 @@ ImageWidget* ControlOperationPage::getOperatewidget()
|
|
|
void ControlOperationPage::resizeSingleUI(bool bMax /*= false*/)
|
|
|
{
|
|
|
ui->DataSources->setGeometry(QRect(20, 20, 400, 32));
|
|
|
- ui->Operatewidget->setGeometry(QRect(5, 5, 786, 786));
|
|
|
+ ui->Operatewidget->setGeometry(QRect(20, 72, 786, 786));
|
|
|
//ui->line_2->setGeometry(QRect(826, 20, 1, 953));
|
|
|
ui->LiveButton->setGeometry(QRect(436, 20, 60, 32));
|
|
|
ui->horizontalLayout_2->setGeometry(QRect(12, 882, 786, 32));
|
|
@@ -263,12 +269,21 @@ qreal ControlOperationPage::getScaleFactorValue() {
|
|
|
return m_scaleFactor;
|
|
|
}
|
|
|
void ControlOperationPage::setScaleFactorSize(QPixmap scaledImage) {
|
|
|
- int newWidth = scaledImage.width() * m_scaleFactor;
|
|
|
- int newHeight = scaledImage.height() * m_scaleFactor;
|
|
|
+ //int newWidth = scaledImage.width() * m_scaleFactor;
|
|
|
+ //int newHeight = scaledImage.height() * m_scaleFactor;
|
|
|
|
|
|
- QPixmap curr_scaledImage = scaledImage.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
|
|
- ui->Operatewidget->setPixmapAndPoint(curr_scaledImage, m_previousScaleFactor, m_scaleFactor, m_mousePos);
|
|
|
- ui->Operatewidget->setPixmap(curr_scaledImage);
|
|
|
+ //QPixmap curr_scaledImage = scaledImage.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
|
|
+ // ui->Operatewidget->setPixmapAndPoint(curr_scaledImage, m_previousScaleFactor, m_scaleFactor, m_mousePos);
|
|
|
+ // ui->Operatewidget->setPixmap(curr_scaledImage);
|
|
|
+ if (m_currentImageView == nullptr) {
|
|
|
+ updateOperateWidget(scaledImage);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ QSize size = ui->Operatewidget->size();
|
|
|
+ QPixmap scaledPixmap = scaledImage.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
|
|
+ m_currentImageView->setCurPixmap(scaledPixmap);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -289,6 +304,7 @@ void ControlOperationPage::UpDateCameraBind(CameraBind* pCameraBind)
|
|
|
|
|
|
void ControlOperationPage::setSwitchJoystickButEnable(bool isEnable)
|
|
|
{
|
|
|
+ ui->switchJoystickBut->setEnabled(isEnable);
|
|
|
if (isEnable == false)
|
|
|
{
|
|
|
ResetIdleTimer(false);
|
|
@@ -595,3 +611,59 @@ void ControlOperationPage::setBlueBord() {
|
|
|
ui->BackGround->setStyleSheet(QString::fromUtf8("border: 4px solid blue;"));
|
|
|
}
|
|
|
|
|
|
+void ControlOperationPage::on_RulerButton_clicked()
|
|
|
+{
|
|
|
+ if (m_currentMode == ModeImage) {
|
|
|
+ if (m_currentImageView->rulerVisibale()) {
|
|
|
+ m_currentImageView->endRuler();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ m_currentImageView->startRuler();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ControlOperationPage::on_PenButton_clicked() {
|
|
|
+ m_isEnable = !m_isEnable;
|
|
|
+
|
|
|
+ if (m_isEnable) {
|
|
|
+ //ui->Operatewidget->setIsDrawing(true);
|
|
|
+ m_currentImageView->setIsDrawing(true);
|
|
|
+ ui->PenButton->setStyleSheet("QPushButton { background-color: #808FFF; }");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ //ui->Operatewidget->setIsDrawing(false);
|
|
|
+ m_currentImageView->setIsDrawing(false);
|
|
|
+ ui->PenButton->setStyleSheet("QPushButton { background-color: none; }");
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ControlOperationPage::SaveNewImage()
|
|
|
+{
|
|
|
+ //// 捕获 ui->Operatewidget 的当前显示内容
|
|
|
+ //QPixmap pixmap = ui->Operatewidget->grab();
|
|
|
+
|
|
|
+ //// 使用当前时间生成默认文件名
|
|
|
+ //QString defaultFileName = QDateTime::currentDateTime().toString("yyyy-MM-dd_HH-mm-ss") + ".png";
|
|
|
+
|
|
|
+ //// 弹出文件对话框,让用户选择保存路径和文件名
|
|
|
+ //QString filePath = QFileDialog::getSaveFileName(
|
|
|
+ // this,
|
|
|
+ // tr("保存图片"),
|
|
|
+ // QDir::homePath() + "/" + defaultFileName, // 默认路径为用户目录,文件名为当前时间
|
|
|
+ // tr("PNG 文件 (*.png);;JPEG 文件 (*.jpg);;所有文件 (*)")
|
|
|
+ //);
|
|
|
+
|
|
|
+ //// 如果用户取消保存,则退出函数
|
|
|
+ //if (filePath.isEmpty()) {
|
|
|
+ // return;
|
|
|
+ //}
|
|
|
+
|
|
|
+
|
|
|
+ //if (!pixmap.save(filePath)) {
|
|
|
+ // QMessageBox::warning(this, tr("保存失败"), tr("无法保存图片到指定路径。"));
|
|
|
+ //}
|
|
|
+ //else {
|
|
|
+ // QMessageBox::information(this, tr("保存成功"), tr("图片已成功保存到:") + filePath);
|
|
|
+ //}
|
|
|
+}
|