2013-10-17 63 views
0

我有一个QT主窗口,在此之上我想添加一个窗口小部件(包含按钮),如下图所示。 如果我添加一个停靠窗口小部件,它将添加到单独的行中,但不会添加为现有主窗口上的叠加。 enter image description here 有没有输入?在QT窗口顶部设计自定义QT Widget

+0

我的[其他答案](http://stackoverflow.com/a/19367454/1329652)包含在另一个窗口上有透明覆盖的完整示例。你可以调整覆盖层以绘制你想要的 - 可能你可以重复使用一组带有自定义样式的按钮。 –

回答

0

最简单的方法是将叠加窗口小部件的父窗口设置为主窗口。但是因为它不会有任何布局,所以您必须自己处理几何图形。如果你想有多个叠加层,最后添加的将是最高层。

#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(); 
} 
0

你应该看看使用QStackedLayout来做到这一点。