qt QDockWidget QStackWidget的简单使用

stackdlg.h 

#ifndef STACKDLG_H
#define STACKDLG_H

#include <QtWidgets/QDialog>
#include <QListWidget>
#include <QStackedWidget>
#include <QLabel>
#include "ui_stackdlg.h"

class StackDlg : public QDialog
{
	Q_OBJECT

public:
	StackDlg(QWidget *parent = 0);
	~StackDlg();

private:
	Ui::StackDlgClass ui;
	QListWidget *list;
	QStackedWidget *stack;
	QLabel *label1;
	QLabel *label2;
	QLabel *label3;
};

#endif // STACKDLG_H

stackdlg.cpp 

#include "stackdlg.h"
#include <QHBoxLayout>

StackDlg::StackDlg(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);
	setWindowTitle("StackWidget");
	list = new QListWidget(this);
	list->insertItem(0, "windows1");
	list->insertItem(1, "windows2");
	list->insertItem(2, "windows3");

	label1 = new QLabel("label1");
	label2 = new QLabel("label2");
	label3 = new QLabel("label3");

	stack = new QStackedWidget(this);
	stack->addWidget(label1);
	stack->addWidget(label2);
	stack->addWidget(label3);
	
	QHBoxLayout *mainLayout = new QHBoxLayout(this);
	mainLayout->setMargin(5);
	mainLayout->setSpacing(5);
	mainLayout->addWidget(list);
	mainLayout->addWidget(stack, 0, Qt::AlignHCenter);
	mainLayout->setStretchFactor(list, 1);
	mainLayout->setStretchFactor(stack, 3);

	connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int)));
}

StackDlg::~StackDlg()
{

}



qdock.cpp 

#include "qdock.h"
#include <QTextEdit>
#include <QDockWidget>
Qdock::Qdock(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	setWindowTitle("Test");
	QTextEdit *te = new QTextEdit(this);
	te->setText("Main Window");
	te->setAlignment(Qt::AlignCenter);
	setCentralWidget(te);

	QDockWidget *dock = new QDockWidget("Dock Window1", this);
	dock->setFeatures(QDockWidget::DockWidgetMovable);
	dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
	QTextEdit *te1 = new QTextEdit;
	te1->setText("Dock Window1");
	dock->setWidget(te1);
	addDockWidget(Qt::RightDockWidgetArea, dock);

	dock = new QDockWidget("Dock Window2", this);
	dock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable);
	QTextEdit *te2 = new QTextEdit;
	te2->setText("Dock Window2");
	dock->setWidget(te2);
	addDockWidget(Qt::RightDockWidgetArea, dock);

	dock = new QDockWidget("Dock Window3", this);
	dock->setFeatures(QDockWidget::AllDockWidgetFeatures);
	QTextEdit *te3 = new QTextEdit;
	te3->setText("Dock Windo3");
	dock->setWidget(te3);
	addDockWidget(Qt::RightDockWidgetArea, dock);


}

Qdock::~Qdock()
{

}



Keep it simple!
作者:N3verL4nd
知识共享,欢迎转载。
原文地址:https://www.cnblogs.com/lgh1992314/p/5834812.html