为啥我在设计QT的时候对不齐

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我在设计QT的时候对不齐相关的知识,希望对你有一定的参考价值。

选择你要对齐的控件,然后右键,选择对齐的方式就可以了,最后整个窗口也要选择对齐 参考技术A 用HBoxLayout和VBoxLayouot

Qt:为啥我的图片在 LinuxFb 上的背景是绿色的?

【中文标题】Qt:为啥我的图片在 LinuxFb 上的背景是绿色的?【英文标题】:Qt: Why is the background of my image green on LinuxFb?Qt:为什么我的图片在 LinuxFb 上的背景是绿色的? 【发布时间】:2017-05-16 21:37:23 【问题描述】:

我的 Qt 应用程序应该将 JPEG 图像显示到 HDMI 监视器。当我在我的 Linux 桌面环境中运行应用程序时,图像会正确显示。

但是,当我在 LinuxFB 下的嵌入式 Linux 环境中运行此应用程序时,图像周围有大量绿色。

我的 1080p 显示器上的 NTSC (720x480) 彩条。

我的应用程序是用 QLabel 而不是 QWidget 编写的,并且没有任何活动窗口。我尝试了许多解决方案,主要是使用 QPainter,但到目前为止,背景外观没有任何改变。

int main (int argc, char *argv[])

    QApplication app(argc, argv);

    // Set the app palette to be transparent
    app.setPalette(QPalette(Qt::transparent));

    QPixmap input ("test.jpg");
    QImage image(input.size(), QImage::Format_ARGB32_Premultiplied);

    // Try to fill the QImage to be transparent
    image.fill(Qt::transparent);

    QPainter p(&image);

    // Try a few things to get the painter background to be transparent
    p.setOpacity(0.5);  // 0 is invisible, 1 is opaque
    p.setBackgroundMode(Qt::TransparentMode);
    p.setBackground(Qt::transparent);
    p.setBrush(Qt::transparent);

    p.drawPixmap(0,0,input);
    p.end();
    QPixmap output = QPixmap::fromImage(image);

    QLabel label (0, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);

    // Set the style sheet background color as transparent as well
    label.setStyleSheet("background-color: transparent;");
    //label.setStyleSheet("background-color: rgba(255,255,255,0);");

    label.setPixmap(output);
    label.setScaledContents(true);
    label.show();

    return app.exec();

应用程序执行如下

./my-Qt-application -qws -nomouse -display LinuxFb:/dev/fb1

我认为这与 Linux 帧缓冲区本身没有任何关系,因为绿色背景仅在我运行 Qt 应用程序时出现。

假设绿色背景来自 Qt,我该怎么做才能将其关闭(或使其透明)?

【问题讨论】:

谢谢,这是一个错字。我在编辑中更正了它。 【参考方案1】:

Qt 4.8(可能是 4.x)

绿色背景来自QWSServer。您可以使用QWSServer::setBackground() 更改它。

Qt 5.x

绿色背景的起源还是Qt,但是QWSServer已经不存在了。我建议使用全屏QWidget 作为背景。您可以使用包含background-color: black; 的简单样式表更改为QWidget 的背景颜色。

【讨论】:

【参考方案2】:

您没有做任何事情来正确缩放标签。绿色背景是您的标签所在的位置 - 它可能是帧缓冲区的默认内容。填满整个屏幕,你就不会有这个问题了。

【讨论】:

以上是关于为啥我在设计QT的时候对不齐的主要内容,如果未能解决你的问题,请参考以下文章

网页设计

为啥qt designer设计界面和用python运行得到的不一样?

为啥我在VS里面设计的时候设置了margin-top的DIV显示正常,但是预览的时候margin-top就无效了

为啥我执行 Python QT5 代码时没有显示图标和图像?

为啥在 Qt 中继承 QWidget 类时出现内存泄漏

Qt中用设计器建立的窗口和用代码生成的窗口,为啥拖拽窗口大小的效果不一样?