Qt-使用QSlider放大/缩小
Qt - zoom in/out with QSlider
我想为QGraphicsView
集成一个缩放滑块。我使用QGraphicsView::scale()
进行缩放。
这是我的代码:
void MainWindow::on_sld_zoom_valueChanged(int value)
{
ui->graphicsView->setTransformationAnchor(QGraphicsView::AnchorViewCenter);
double scaleFactor;
scaleFactor = pow(1.1,((value - 100) / 100.0));
ui->graphicsView->scale(scaleFactor,scaleFactor);
}
根据我的函数,我的最小滑块值为1,最大滑块值为200,当值为100时,我的scaleFactor为1。但如果scaleFactor大于1,滑块总是放大。例如,当我将值从150更改为149时,它应该缩小,但没有缩小,因为缩放因子大于1。
我该如何解决这个问题?
ui->graphicsView->scale()
是相对作用。下面是我的on_ZoomSliderValueChanged(int value)
,它将QGraphicsView缩放到当前滑块位置。希望它能帮助你(你可能会想根据你想要的曲线重新计算newScale
):
void PictureWindow::on_ZoomSliderValueChanged(int value)
{
qreal newScale = qPow(m_pPimpl->m_ZoomFactor, value);
QMatrix matrix;
matrix.scale(newScale, newScale);
ui->graphicsView->setResizeAnchor(QGraphicsView::ViewportAnchor(m_pPimpl->m_ViewportAnchor));
ui->graphicsView->setMatrix(matrix);
}
相关文章:
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 我无法缩小此分段错误的原因
- 将stl字符串缩小到小于15个字符的容量
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 奇怪的缩小转换在 g++ 编译器中加倍到浮点警告
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- 将向量从 N1 缩小到 N2 项,而不触发默认构造函数并仅使用 move 语义
- SFML 纹理变换(放大)
- std::map, std::unordered_map - 缩小初始值设定项列表中的转换范围
- 为什么显式构造被视为(隐式)缩小转换?
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- glpointsize() 无法缩小点
- 根据帧速率缩放/缩小数字
- 如何修复鼠标滚轮放大和缩小?
- 在 c++ 中使用递归放大和缩小图片 (sfml)
- QGraphicsView使用鼠标滚轮在鼠标位置下放大和缩小
- 放大和缩小与qpushbutton
- 为什么我不能得到放大和缩小的效果,但必须先调整窗口大小
- Qt-使用QSlider放大/缩小
- 如何放大/缩小到一个OpenGL屏幕,而不渲染整个屏幕