gpt4 book ai didi

c++ - qpixmap.scaled 函数不工作

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:32 26 4
gpt4 key购买 nike

我是 qt 的新手,根据我的研究,我可以使用缩放函数更改像素图/图像的大小。但是当我运行程序时,图像大小仍然相同。这是代码。

QStringList headers;
QString headerValues="header1,header2";
headers=headerValues.split(",");
ui->tableWidget_2->setColumnCount(2);
ui->tableWidget_2->setHorizontalHeaderLabels(headers);
QStringList verticalHeaders;
QString verticalHeaderValues="vertical1,vertical2";
verticalHeaders=verticalHeaderValues.split(",");
ui->tableWidget_2->setRowCount(1);
ui->tableWidget_2->setVerticalHeaderLabels(verticalHeaders );
ui->tableWidget_2->horizontalHeader()->setDefaultSectionSize(150);
ui->tableWidget_2->verticalHeader()->setDefaultSectionSize(150);

ui->tableWidget_2->horizontalHeader()->setResizeMode(QHeaderView::Fixed);

ui->tableWidget_2->verticalHeader()->setResizeMode(QHeaderView::Fixed);
QString filename="/home/marcvincento/Desktop/Private/Projects/fixButtons/Printer.png";
QPixmap pic(filename);
pic.scaled ( 20, 20, Qt::IgnoreAspectRatio, Qt::FastTransformation );

QBrush brush(pic);

QTableWidgetItem* item=new QTableWidgetItem();

item->setBackground(brush);
item->setText("ADD 5,1");
ui->tableWidget_2->setItem(0,0,item);

最佳答案

如果您阅读 QPixmap 的 Qt 文档,您会看到 scaled() 函数被声明为 const 并返回一个 QPixmap。这意味着像素图本身没有被修改。发生的是这些函数返回像素图的缩放版本。您必须将其存储在某个地方。在您的情况下,您可以将缩放后的像素图传递给 QBrush 构造函数:

QPixmap pic(filename);
QBrush brush(pic.scaled(20, 20, Qt::IgnoreAspectRatio,
Qt::FastTransformation));

如果您稍后需要再次使用相同的缩放像素图并且对原始的未缩放像素图没有用处,那么您应该直接从源的缩放版本构建 pic 像素图,这样您就不会多次执行相同的缩放操作:

QPixmap pic(QPixmap(filename).scaled(20, 20, Qt::IgnoreAspectRatio,
Qt::FastTransformation));

如果您确实需要缩放和未缩放版本,那么显然您需要两个像素图;原始版本之一和缩放版本之一:

QPixmap pic(filename);
QPixmap picScaled(pic.scaled(20, 20, Qt::IgnoreAspectRatio,
Qt::FastTransformation));

关于c++ - qpixmap.scaled 函数不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com