【发布时间】:2013-10-26 15:42:15
【问题描述】:
我有一个 QT 主窗口,在此之上我想添加一个小部件(包含按钮),如下图所示。 如果我添加一个停靠小部件,它会添加到单独的行中,但不会添加为现有主窗口上的叠加层。 任何输入?
【问题讨论】:
-
我的other answer 包含在另一个窗口上具有透明覆盖的完整示例。您可以定制叠加层以绘制您想要的 - 或许您可以重用一组具有自定义样式的按钮。
我有一个 QT 主窗口,在此之上我想添加一个小部件(包含按钮),如下图所示。 如果我添加一个停靠小部件,它会添加到单独的行中,但不会添加为现有主窗口上的叠加层。 任何输入?
【问题讨论】:
最简单的方法是将叠加小部件的父级设置为主窗口。但是因为它不会出现在任何布局中,所以您必须自己处理它的几何形状。如果您想要多个叠加层,最后添加的将是最顶部的。
#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow *window = new QMainWindow();
QWidget *centralWiddget = new QWidget();
window->setCentralWidget(centralWiddget);
QVBoxLayout *layout = new QVBoxLayout(centralWiddget);
QPushButton *button = new QPushButton("Button in a layout");
layout->addWidget(button);
QPushButton *overlayButton = new QPushButton("Button overlay");
overlayButton->setParent(window);
overlayButton->setGeometry(40, 40, 120, 30)
window->show();
return app.exec();
}
【讨论】:
你应该考虑使用 QStackedLayout 来做到这一点。
【讨论】: