Qt 显示问题,设置背景色或图片,却不显示

首先,不能继承QMainWindows。因为它自带布局器,除非重载他的布局。



   QLabel *a = new QLabel();

                a->setStyleSheet("background-color:red");
        QHBoxLayout *b = new QHBoxLayout();
        b->addWidget(a);
        this->setLayout(b);

//ui.setupUi(this);



上面的代码是在一个类的构造函数中实现的,该类继承与QMainWindows。可是结果确没有出现红色的背景,我应该怎么修改?


应该是setshown的问题

QLabel *a = new QLabel(this); 这样才能在窗口中显示

修改后的代码分析如下:

//QPainter painter(this);
//painter.setRenderHints(QPainter::Antialiasing| QPainter::TextAntialiasing);
//painter.begin(this);
//QImage a;
//a.load("./10010.jpg");
//QPoint p(30,30);
//painter.drawImage(p,a);
//a.save("ok.jpg");
//painter.end();


ui.setupUi(this);//调用系统默认的UI构造,实现菜单栏等(就是那行白框)


QLabel *a = new QLabel(this);//在当前窗口中添加Label控件
a->setStyleSheet("background-color:red");
// a->setShown(true);//如果不在构造函数中指定父级窗口,该Label是默认不显示的,需要单独设置才能显示
QPixmap *c = new QPixmap();
c->load("./10010.png");

//路径一直是个问题,“../”表示上一级目录开始 “./”表示当前同级目录开始 “/”表示根目录开始。

//很多时候失败了。最后用setStyleSheet
// a->setPixmap(*c);
// QImage image;
// image = image.scaled(512,512);
image.save("123.png");
// QFile f("123.txt");
// f.open(QIODevice::WriteOnly);
// image.save("123.png");
a->setStyleSheet("QLabel{image:url(10010.jpg)}");
a->setFixedSize(180,224);
QHBoxLayout *b = new QHBoxLayout();
b->addWidget(a);
// this->setLayout(b);
this->setShown(true);

转载于:https://my.oschina.net/jingzhe/blog/157381

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`QLabel` 是 Qt 库中的一个用于显示各种类型的图像控件。默认情况下,当 `QLabel` 显示图片时可能会出现透明背景的问题,尤其是在图片本身背景不是纯色或者有半透明部分的情况下。 解决 `QLabel` 非透明背景显示图片的方法包括: 1. **设置合适的背景颜色**:你可以通过在 `QLabel` 的样式表中设定背景颜色来避免透明背景。例如,在 `.q_label` 类中指定背景色,如下所示: ```css .q_label { background-color: #FFFFFF; /* 指定你需要的颜色 */ } ``` 然后将这个类应用到 `QLabel` 控件上: ```cpp QLabel label; label.setWindowFlags(Qt::Widget); label.setStyleSheet("QWidget#q_label {background-color: white;}"); label.show(); ``` 2. **使用QPixmap填充背景**:另一种方法是在 `QLabel` 中显示图片之前,先创建一个具有所需背景色的 `QPixmap` 对象,并将图片加载到这个 `QPixmap` 上,然后使用该 `QPixmap` 来更新 `QLabel` 的内容。 示例代码如下: ```cpp QPixmap pixmap("path_to_your_image.png"); // 调整图片大小并保持纵横比 pixmap = pixmap.scaled(label.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); QPainter painter(&pixmap); // 使用你想要作为背景色的RGB值画出矩形覆盖整个图片区域 painter.fillRect(pixmap.rect(), QColor(255, 255, 255)); // 白色 label.setPixmap(pixmap); ``` 3. **使用QImage**:还可以直接操作 `QImage` 对象来修改其颜色模式、透明度等属性。这通常涉及到更多的低级操作,但是可以提供更精细的控制。 无论采用哪种方法,目的都是通过改变背景颜色或是调整图像在控件内的显示方式来消除透明背景带来的视觉不适。在实际应用中选择哪种方法取决于具体的界面需求和个人偏好。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值