Qt 实现QT控件中的QLabel显示图片并自适应显示

一、需求

实现QT控件中的QLabel显示图片,并自适应显示。

二、代码

QImage Image;
Image.load(":/image/image/logo.jpg");
QPixmap pixmap = QPixmap::fromImage(Image);
int with = ui->label_logo->width();
int height = ui->label_logo->height();
QPixmap fitpixmap = pixmap.scaled(with, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); // 饱满填充
//QPixmap fitpixmap = pixmap.scaled(with, height, Qt::KeepAspectRatio, Qt::SmoothTransformation); // 按比例缩放
ui->label_logo->setPixmap(fitpixmap);

 

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 采用Qt库在QLabel控件显示图片并在图片上画直线的实现步骤如下: 1. 创建一个QLabel控件,并设置其大小和位置。 ```cpp QLabel* label = new QLabel(this); label->setGeometry(0, 0, 300, 300); ``` 2. 加载图片并设置为QLabel的背景。 ```cpp QPixmap pixmap(":/image/image.png"); // 从资源文件加载图片 QPalette palette; palette.setBrush(label->backgroundRole(), QBrush(pixmap)); label->setPalette(palette); label->setAutoFillBackground(true); ``` 3. 在QLabel上创建一个QPainter对象,并设置画笔的颜色、宽度等属性。 ```cpp QPainter painter(label); painter.setPen(QPen(Qt::red, 2)); // 设置画笔为红色,宽度为2 ``` 4. 使用QPainter在图片上绘制直线。 ```cpp painter.drawLine(50, 50, 250, 250); // 在图片上绘制一条从(50, 50)到(250, 250)的直线 ``` 5. 更新QLabel控件显示绘制好的图片。 ```cpp label->update(); ``` 完整代码如下所示: ```cpp #include <QtWidgets> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建主窗体 QWidget window; window.setWindowTitle("Qt Display Image"); window.resize(300, 300); // 创建QLabel控件 QLabel* label = new QLabel(&window); label->setGeometry(0, 0, 300, 300); // 加载图片并设置为QLabel的背景 QPixmap pixmap(":/image/image.png"); // 从资源文件加载图片 QPalette palette; palette.setBrush(label->backgroundRole(), QBrush(pixmap)); label->setPalette(palette); label->setAutoFillBackground(true); // 在QLabel上创建一个QPainter对象,并设置画笔的颜色、宽度等属性 QPainter painter(label); painter.setPen(QPen(Qt::red, 2)); // 设置画笔为红色,宽度为2 // 使用QPainter在图片上绘制直线 painter.drawLine(50, 50, 250, 250); // 在图片上绘制一条从(50, 50)到(250, 250)的直线 // 更新QLabel控件显示绘制好的图片 label->update(); window.show(); return a.exec(); } ``` 以上代码演示了如何使用QtQLabel显示图片并在图片上绘制直线。图片加载部分使用了资源文件的方式,即图片需要事先添加到Qt的资源文件。 ### 回答2: 在Qt,要在QLabel显示图片并在图片上画直线,您可以按照以下步骤进行操作: 1. 创建一个QLabel对象,并将其设置为一个窗口部件(Widget)的子部件,使用QVBoxLayout进行布局。 ```cpp QLabel *label = new QLabel(this); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(label); this->setLayout(layout); ``` 2. 加载图片到QPixmap对象,并将其设置到QLabel进行显示。 ```cpp QPixmap pixmap("image.png"); label->setPixmap(pixmap); label->setScaledContents(true); // 自适应QLabel的大小 ``` 3. 创建一个QPainter对象来绘制直线。可以在QLabel的paintEvent事件函数绘制直线。 ```cpp void MyWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.drawPixmap(label->geometry(), pixmap); // 在QLabel的范围内绘制图片 // 绘制直线 painter.setPen(Qt::red); // 设置直线颜色为红色 painter.drawLine(50, 50, 200, 200); // 在图片上画一条直线,起点(50, 50),终点(200, 200) } ``` 这样,您就可以在QtQLabel显示图片并在图片上绘制直线了。希望对您有所帮助! ### 回答3: 在Qt,要在QLabel显示图片并在图片上画直线,可以通过以下步骤实现: 1. 创建一个QLabel控件,并设置其大小和位置。 ```cpp QLabel *label = new QLabel(this); label->setGeometry(10, 10, 500, 500); ``` 2. 从文件加载图片,并将其设置为QLabel的背景。 ```cpp QPixmap pixmap("image.jpg"); label->setPixmap(pixmap); ``` 3. 在QLabel上添加一个QPainter对象,并设置其渲染目标为QLabel。 ```cpp QPainter painter(label); ``` 4. 使用QPen设置画笔的颜色、宽度等属性。 ```cpp QPen pen(Qt::red); pen.setWidth(2); painter.setPen(pen); ``` 5. 使用QPainter在图片上画直线。 ```cpp painter.drawLine(10, 10, 300, 300); ``` 这将在图片上从点(10, 10)绘制一条直线到点(300, 300)。 6. 结束绘制并更新QLabel显示。 ```cpp painter.end(); label->update(); ``` 通过以上步骤,你可以在QtQLabel控件显示图片并在图片上画直线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值