【问题标题】:Add element above layers在图层上方添加元素
【发布时间】:2020-12-08 10:49:13
【问题描述】:

我在 Widows 10、QtCreator 和 QtDesigner 上使用 Qt (5.12.4) 设计了一个 GUI。在这一个中,我添加了很多层来做一些根据窗口大小调整大小的事情。

但我要求在中间的这个 GUI 顶部添加一个图像。如果不重做我的所有图层就无法做到这一点,那么是否可以在 GUI 的某个位置添加一个元素(这里是一个图像)而不将它包含在我的一个图层中?

提前感谢您的帮助。 最好的问候

【问题讨论】:

  • 你的gui是什么类型的? QtWidget 还是 QtQuick?
  • 这是一个 QMainWindow,其中我有我的主层和一个带有自己的层的 Qgroupbox 等等......
  • 好的,也许这个答案对你有帮助stackoverflow.com/a/19201908/3365136
  • 所以作为叠加层可以。我很快就会试试这个。我会尽快通知你

标签: qt user-interface layer


【解决方案1】:

我终于按照@Farshid616的链接,创建了我自己的类:

class Overlay : public QWidget {
public:
    explicit Overlay(QWidget *parent = nullptr) : QWidget(parent) {
        setAttribute(Qt::WA_NoSystemBackground);
        setAttribute(Qt::WA_TransparentForMouseEvents);
        QPixmap pic("://Ressources/img/tonneauGravesMarques.jpg");
        int width = 117;
        int height = 74;
        QPixmap scaled=pic.scaled ( width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );

        QLabel *label = new QLabel(this);
        label->setPixmap(scaled);

        this->resize(width, height);
    }
};

并在我的主要功能中添加一个像这样的项目:

MainWindow::MainWindow(QWidget *parent) : AbstractMainWindow(parent)
{
    qDebug() << "TarMainWindow::TarMainWindow";
    ui->setupUi(this);

    // Create widget for displaying image above all layers
    m_overlay = new Overlay;

    // Add this widget to main window
    this->layout()->addWidget(m_overlay);
}

它正在工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多