使用QT分层组件

时间:2010-10-26 22:04:37

标签: qt qt-creator

我正在使用QT Creator开发一个小型GUI应用程序。我有一个跨越整个窗口的GraphicsView组件。我的问题是,如何在应用程序的四个角中的每个角上放置其他小部件(例如透明按钮)。另外,如何确保右下方组件的大小正确,以便它们保持在右下角。

2 个答案:

答案 0 :(得分:1)

好的,您可以将布局和QWidget添加到QGraphicsView,以便它们覆盖下方的视图。你不能用QtDesigner做这个(我也假设QtCreator),所以你必须在代码中做到这一点。您可以将以下代码放在包含QGraphicsView(命名视图)的窗口的构造函数中,它将向布局添加两个按钮,使它们锚定在视图的右下角:

QGridLayout *gridLayout;
QSpacerItem *horizontalSpacer;
QSpacerItem *verticalSpacer;
QPushButton *button1;
QPushButton *button2;

gridLayout = new QGridLayout(view);
horizontalSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
verticalSpacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
button1 = new QPushButton(view);
button1->setText("Button1");
button2 = new QPushButton(view);
button2->setText("Button2");

gridLayout->addWidget(button1, 1, 1, 1, 1);
gridLayout->addWidget(button2, 1, 2, 1, 1);
gridLayout->addItem(horizontalSpacer, 1, 0, 1, 1);
gridLayout->addItem(verticalSpacer, 0, 2, 1, 1);

在窗口的每个角落添加两个以上的按钮和两个以上的按钮来实现一个按钮应该不会太麻烦。

使标准QWidget控件透明可能有点棘手,尤其是按钮。标签很简单。您可以参考我的answer to another question here获取有关透明QPushButtons

的一些提示

答案 1 :(得分:0)

好的,我现在用 PySide 尝试了这个问题并且它并没有那么糟糕。与黑客生成的ui文件相反,我建议事后再这样做! 因此,我在QGridLayout中设计了2个单元格并将所有内容并排排列。有它编译和建立ui我:

    # take 2nd item and add it back to 0, 0 cell in the grid layout
    layer = self.ui.gridLayout.takeAt(1)
    self.ui.gridLayout.addLayout(layer, 0, 0, 1, 1)