Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QPushButton的大小不断增加_Qt - Fatal编程技术网

Qt QPushButton的大小不断增加

Qt QPushButton的大小不断增加,qt,Qt,我试图在按钮上显示从网络摄像头捕获的图像。问题是每次我拍摄新图像时,按钮的大小都会增加。代码如下: connect(imageCapture, SIGNAL(imageCaptured(int,QImage)), this, SLOT(processCapturedImage(int,QImage))); . . . . void Camera::processCapturedImage(int requestId, const QImage& img) { Q_UNUSED(

我试图在按钮上显示从网络摄像头捕获的图像。问题是每次我拍摄新图像时,按钮的大小都会增加。代码如下:

connect(imageCapture, SIGNAL(imageCaptured(int,QImage)), this, SLOT(processCapturedImage(int,QImage)));
.
.
.
.

void Camera::processCapturedImage(int requestId, const QImage& img)
{
    Q_UNUSED(requestId);
    QImage scaledImage = img.scaled(ui->lastImageCapturedBtn->size(),
                                Qt::KeepAspectRatio,
                                Qt::SmoothTransformation);
    QPixmap capturedImage = QPixmap::fromImage(scaledImage);
    ui->lastImageCapturedBtn->setIcon(QIcon(capturedImage));
    ui->lastImageCapturedBtn->setIconSize(capturedImage.rect().size());
}
我变了

QImage scaledImage = img.scaled(ui->lastImageCapturedBtn->size(),
                                Qt::KeepAspectRatio,
                                Qt::SmoothTransformation);`
QImage scaledImage=img.scaled(298298)
没有任何效果,每次单击以捕获新图像时,按钮都会变得越来越大

我也换了线路

ui->lastImageCapturedBtn->setIconSize(capturedImage.rect().size());

-同样的行为


该按钮是使用Qt设计器创建的。我将maximumSize更改为298x298,并将iconSize更改为298x298

我将minimumSize更改为298x298,现在它正在按我的预期方式工作

您调试大小值了吗?
capturedImage
的大小是否每次都相同?为什么不将其设置为最大大小?QWidget::setFixedSize()如何?
ui->lastImageCapturedBtn->setIconSize(ui->lastImageCapturedBtn->size());