DiagramDesigner/diagramCavas/source/diagramEditor/diagramEditorPreviewDlg.cpp

66 lines
1.7 KiB
C++
Raw Normal View History

2025-09-05 17:30:07 +08:00
#include "diagramEditor/diagramEditorPreviewDlg.h"
#include "diagramEditor/editView.h"
#include "diagramEditor/editScene.h"
#include "graphicsDataModel/diagramEditorModel.h"
#include "diagramEditor/editPanel.h"
2026-03-02 20:15:22 +08:00
#include <QGuiApplication>
#include <QScreen>
2025-09-05 17:30:07 +08:00
DiagramEditorPreviewDlg::DiagramEditorPreviewDlg(QWidget *parent)
: QDialog(parent)
,_pView(nullptr)
,_pScene(nullptr)
,_pMainLayout(nullptr)
,_pParent(nullptr)
{
2026-03-02 20:15:22 +08:00
setWindowTitle("预览");
2025-09-05 17:30:07 +08:00
auto pParent = dynamic_cast<EditPanel*>(parent);
if(pParent)
setParent(pParent);
QRect recParent = parent->geometry();
setGeometry(recParent.right(),recParent.y(),recParent.width(),recParent.height());
initial();
}
DiagramEditorPreviewDlg::~DiagramEditorPreviewDlg()
{
}
void DiagramEditorPreviewDlg::initial()
{
_pMainLayout = new QVBoxLayout(this);
_pView = new EditView(this);
2026-03-02 20:15:22 +08:00
_pView->scale(0.5, 0.5);
2025-09-05 17:30:07 +08:00
_pMainLayout->addWidget(_pView);
2025-09-26 18:50:21 +08:00
_pScene = new EditPreviewScene(this);
2025-09-05 17:30:07 +08:00
_pScene->setSceneRect(_pParent->getScene()->sceneRect()); //使用父窗口scene大小
_pView->setScene(_pScene);
2025-10-17 18:14:44 +08:00
_pView->centerOn(QPointF(0,0));
2025-09-05 17:30:07 +08:00
}
void DiagramEditorPreviewDlg::showDlg()
{
if(_pParent){
2026-03-02 20:15:22 +08:00
_pScene->clear();
2025-09-05 17:30:07 +08:00
_pParent->getModel()->setCurPreviewScene(_pScene);
}
2026-03-02 20:15:22 +08:00
2025-09-05 17:30:07 +08:00
show();
2026-03-02 20:15:22 +08:00
// 设置大小为屏幕的1/3
QScreen *screen = QGuiApplication::primaryScreen();
QRect rec = screen->availableGeometry();
int w = rec.width() / 3;
int h = rec.height() / 3;
// 确保最小尺寸
w = qMax(w, 400);
h = qMax(h, 300);
resize(w, h);
2025-09-05 17:30:07 +08:00
2026-03-02 20:15:22 +08:00
QRect mainRect = screen->availableGeometry();
int x = mainRect.right() - width();
int y = mainRect.bottom() - height();
move(x, y);
2025-09-05 17:30:07 +08:00
}