提问人:GendOS 提问时间:2/4/2021 最后编辑:eyllanescGendOS 更新时间:2/5/2021 访问量:488
尝试将 QStackedLayout 与 QStacked:: StackAll 一起使用,但它无法正常工作
Trying to use QStackedLayout with QStacked:: StackAll, but it works incorrectly
问:
我正在尝试将 QStackedLayout 与 QStacked:: StackAll 一起使用,以同时显示两个小部件。但是,即使我放置了透明背景,它也会突破主背景下方的小部件。
这是我的主窗口.cpp代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mywidget.h"
#include <QStackedLayout>
#include <QDebug>
#include <QComboBox>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setAttribute(Qt::WA_TranslucentBackground);
MyWidget* wg = new MyWidget(this);
FirstWidget* fw = new FirstWidget;
SecondWidget* sw = new SecondWidget;
QStackedLayout* stack = new QStackedLayout;
stack->setStackingMode(QStackedLayout::StackAll);
stack->addWidget(sw);
stack->addWidget(fw);
wg->setLayout(stack);
QPushButton* btn = new QPushButton(this);
btn->setFixedSize(100, 20);
btn->setText("Check");
connect(btn, &QPushButton::clicked, [stack]()
{
if (stack->currentIndex() == 0)
{
stack->setCurrentIndex(1);
qDebug() << "fw";
}
else
{
stack->setCurrentIndex(0);
qDebug() << "sw";
}
});
}
MainWindow::~MainWindow()
{
delete ui;
}
答:
0赞
Andrei Andreev
2/5/2021
#1
您必须为堆栈中最顶层的小部件 SecondWidget 或 FirstWidget 制作透明背景,但您为 MainWindow 调用 setAttribute(Qt::WA_TranslucentBackground)。您也可以尝试 sw->setStyleSheet(“background : transparent;”)。
评论