这里大致介绍下QStack。
看代码吧。
stack.h
#ifndef STACK_H
#define STACK_H
#include <QWidget>
#include <QTextEdit>
#include <QStack>
class StackWidget : public QWidget
{
Q_OBJECT
public:
explicit StackWidget(QWidget *parent = NULL);
private:
QTextEdit *textEdit;
QStack <QString> stringStack;
};
#endif
stack.cpp
#include "stack.h"
#include <QHBoxLayout>
StackWidget::StackWidget(QWidget *parent /*= NULL*/) : QWidget(parent)
{
///--设置窗口大小
resize(300, 150);
///--textEdit控件
textEdit = new QTextEdit();
///----元素入栈
stringStack.push_back("element 1");
stringStack.push_back("element 2\n");
stringStack.push_back("element 3\n");
///----元素出栈
while (!stringStack.isEmpty())
{
textEdit->insertPlainText(stringStack.pop());
}
///---布局控件
QHBoxLayout *hLayout = new QHBoxLayout();
hLayout->addWidget(textEdit);
hLayout->setContentsMargins(0, 0, 0, 0);
///---显示布局
setLayout(hLayout);
}
main.cpp
#include "stack.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
StackWidget win;
win.show();
return a.exec();
}
运行结果:
QStack 的原则是 先进后出,需要进栈的数据,用函数push()进栈,而出栈用 pop()函数。top() 功能提供对最上面的项目访问但不移除它。
QStack 继承QVector, QVector的所有函数都可以用于QStack.例如,可以用 函数 isEmpty() 判断栈中是否数据。另外,QStack 提供了三种可以很容易地实现后进先出语义的方便功能:push ()、 pop () 和 top()。
QStack 的值类型必须是一个不可忽视的数据类型。