你可以使用 QSlider 控件和 QWidget 的 resize() 函数来实现控制摄像头预览画面的大小。具体步骤如下:
在 Qt Designer 中创建一个 QWidget 类型的窗口,并添加一个 QSlider 控件和一个 QLabel 控件。
设置 QSlider 控件的 minimum、maximum 和 value 属性,以及 tickPosition 和 tickInterval 属性,以便用户可以在滑块上看到当前值。
将 QSlider 的 valueChanged() 信号连接到一个槽函数中,该函数将计算摄像头预览画面的新大小并调用 QWidget 的 resize() 函数来更改窗口大小。
在槽函数中,你需要获取当前的摄像头预览画面大小,并计算一个新的大小,该大小与 QSlider 控件的当前值成比例。
最后,将 QLabel 控件的文本设置为当前摄像头预览画面大小,以便用户可以方便地了解当前大小。
以下是一个简单的示例代码,以演示如何使用 QSlider 控件控制摄像头预览画面的大小:
#include <QtWidgets>
class CameraViewer : public QWidget {
public:
CameraViewer(QWidget *parent = nullptr) : QWidget(parent) {
setMinimumSize(640, 480); // 设置最小尺寸
m_label = new QLabel(QString("%1x%2").arg(width()).arg(height()), this);
m_slider = new QSlider(Qt::Horizontal, this);
m_slider->setMinimum(50); // 最小值 50
m_slider->setMaximum(200); // 最大值 200
m_slider->setValue(100); // 初始值 100
m_slider->setTickPosition(QSlider::TicksBelow);
m_slider->setTickInterval(25);
connect(m_slider, &QSlider::valueChanged, this, &CameraViewer::onSliderValueChanged);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(m_label);
layout->addWidget(m_slider);
}
private:
QLabel *m_label;
QSlider *m_slider;
private slots:
void onSliderValueChanged(int value) {
int w = width() * value / 100; // 计算新的宽度
int h = height() * value / 100; // 计算新的高度
resize(w, h); // 调整窗口大小
m_label->setText(QString("%1x%2").arg(w).arg(h)); // 更新文本
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
CameraViewer viewer;
viewer.show();
return app.exec();
}
在此示例中,QSlider 控件允许用户将摄像头预览画面的大小从 50% 到 200% 进行调整,并显示当前大小。调整大小时,窗口会自动缩放以适应新大小。