将Qwidget提升到一个其它类中,做堆栈窗体 要怎么用
时间: 2024-05-10 21:16:57 浏览: 93
将QWidget提升到一个其他类中,可以让该类继承QWidget的所有特性和功能,同时也可以在该类中添加自己的特性和功能。
要在Qt中创建一个堆栈窗体,可以使用QStackedWidget控件。QStackedWidget是一个容器控件,可以包含多个子控件,但一次只能显示一个子控件,可以通过切换子控件来实现堆栈效果。
下面是一个示例代码,可以创建一个堆栈窗体:
```cpp
#include <QtWidgets>
class StackWidget : public QWidget
{
public:
StackWidget(QWidget *parent = nullptr) : QWidget(parent)
{
// 创建两个子控件
QWidget *w1 = new QWidget(this);
QWidget *w2 = new QWidget(this);
// 设置子控件的背景颜色
w1->setStyleSheet("background-color: red;");
w2->setStyleSheet("background-color: blue;");
// 创建QStackedWidget控件
QStackedWidget *stackedWidget = new QStackedWidget(this);
// 将子控件添加到QStackedWidget中
stackedWidget->addWidget(w1);
stackedWidget->addWidget(w2);
// 创建两个按钮,用于切换子控件
QPushButton *button1 = new QPushButton("Widget 1", this);
QPushButton *button2 = new QPushButton("Widget 2", this);
// 创建垂直布局,并将QStackedWidget和按钮添加到布局中
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(stackedWidget);
layout->addWidget(button1);
layout->addWidget(button2);
// 连接按钮的信号和槽函数
connect(button1, &QPushButton::clicked, stackedWidget, [=]() {
stackedWidget->setCurrentWidget(w1);
});
connect(button2, &QPushButton::clicked, stackedWidget, [=]() {
stackedWidget->setCurrentWidget(w2);
});
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
StackWidget stackWidget;
stackWidget.show();
return app.exec();
}
```
在该示例中,我们创建了一个StackWidget类,它继承自QWidget,并包含一个QStackedWidget控件和两个按钮。当点击按钮时,可以切换QStackedWidget中的子控件。
阅读全文