2D绘图中设置图幅比例

        QT提供了一个绘图管理框架用于2D绘图的管理和显示,其包括了3个类分别为QGraphicsItem, QGraphicsScene和QGraphicsView,分别实现了绘图对象管理、绘图管理和功能接口以及绘图的显示和渲染功能。

        以下是调用该框架实现绘图图幅的比例调整功能。

1,首先创建一个基于QMainWindow类的gui程序。

2,在MainWindow构造函数中,创建一个基于“QGraphicsScene”类的控件sence,控件的图幅设置为5000×5000,并将此sence设置为窗口主控件。view为一个"QGraphicsView"类型的指针。

// setup draw scene scene = new QGraphicsScene(this);
scene->setSceneRect(QRectF(0, 0, 5000, 5000)); 
view = new QGraphicsView(scene); 
// make the draw scene as the main window 
this->setCentralWidget(view); 


3,创建一个基于"QComboBox"类的下拉选择控件sceneScaleCombo,并设置50%、75%、100%、150%几种下拉值,然后将其停靠在主菜单栏上。其中“ui->mainToolBar”为界面文件"mainwindow.ui"中的主菜单栏指针。

// Creat tool bar of zoom
QComboBox *sceneScaleCombo = new QComboBox;
QStringList scales;
scales << tr("50%") << tr("75%") << tr("100%") << tr("125%") << tr("150%");
sceneScaleCombo->addItems(scales);
sceneScaleCombo->setCurrentIndex(2);
ui->mainToolBar->addWidget(sceneScaleCombo); 

 

4,创建信号槽,信号类型为"currentIndexChanged(QString)",槽连接到"SceneScaleChanged(QString)"函数

connect(sceneScaleCombo, SIGNAL(currentIndexChanged(QString)),this, SLOT(SceneScaleChanged(QString)));    // slot signal 


5,创建图幅比例设置函数,该函数接收下拉选择控件"sceneScaleCombo"发送过来的比例修改消息,根据消息中的数值调整图幅。

void MainWindow::SceneScaleChanged(const QString &scale) {
     double newScale = scale.left(scale.indexOf(tr("%"))).toDouble() / 100.0;
     QMatrix oldMatrix = view->matrix();
     view->resetMatrix();
     view->translate(oldMatrix.dx(), oldMatrix.dy());
     view->scale(newScale, newScale);
} 


6,编译调试程序

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值