【问题标题】:Design custom QT Widget on top of QT Window在 QT Window 之上设计自定义 QT Widget
【发布时间】:2013-10-26 15:42:15
【问题描述】:

我有一个 QT 主窗口,在此之上我想添加一个小部件(包含按钮),如下图所示。 如果我添加一个停靠小部件,它会添加到单独的行中,但不会添加为现有主窗口上的叠加层。 任何输入?

【问题讨论】:

  • 我的other answer 包含在另一个窗口上具有透明覆盖的完整示例。您可以定制叠加层以绘制您想要的 - 或许您可以重用一组具有自定义样式的按钮。

标签: qt qt4


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多