0
我有一个QT主窗口,在此之上我想添加一个窗口小部件(包含按钮),如下图所示。 如果我添加一个停靠窗口小部件,它将添加到单独的行中,但不会添加为现有主窗口上的叠加。 有没有输入?在QT窗口顶部设计自定义QT Widget
我有一个QT主窗口,在此之上我想添加一个窗口小部件(包含按钮),如下图所示。 如果我添加一个停靠窗口小部件,它将添加到单独的行中,但不会添加为现有主窗口上的叠加。 有没有输入?在QT窗口顶部设计自定义QT Widget
最简单的方法是将叠加窗口小部件的父窗口设置为主窗口。但是因为它不会有任何布局,所以您必须自己处理几何图形。如果你想有多个叠加层,最后添加的将是最高层。
#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来做到这一点。
我的[其他答案](http://stackoverflow.com/a/19367454/1329652)包含在另一个窗口上有透明覆盖的完整示例。你可以调整覆盖层以绘制你想要的 - 可能你可以重复使用一组带有自定义样式的按钮。 –