QT 控件大小随窗口大小变化而变化

                                                                    困扰我很久的QT问题一

环境介绍

VS2015 [Debug/Release x86]    Qt 5.10.0 ;

一、效果

二、实现

1、嵌套布局
QT 控件大小随窗口大小变化而变化_第1张图片
2、设置中心窗口
QT 控件大小随窗口大小变化而变化_第2张图片

三、代码

①main.cpp

#include "W_TOOL.h"
#include 

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	W_TOOL w;
	w.setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
	w.resize(DESKTOP_WIDTH, DESKTOP_HEIGHT);
	w.show();
	return a.exec();
}

②W_TOOL.h

#pragma once

#include 
#include "ui_W_TOOL.h"


#define DESKTOP_WIDTH    1425/2			   //主界面大小
#define DESKTOP_HEIGHT	 850/2

class QLabel;
class QVBoxLayout;
class QHBoxLayout;
class QTreeWidget;

class W_TOOL : public QMainWindow
{
	Q_OBJECT

public:
	W_TOOL(QWidget *parent = Q_NULLPTR);
	void initMainWindow();

private:
	Ui::W_TOOLClass ui;

	QLabel * showShrinkPicture;
	QTreeWidget * toolBoxTree;
	QLineEdit * showFilePath;
	QLabel * showSrcPicture;


	QWidget *mainWindowWidget;

	QWidget *mainLeftWidget;
	QVBoxLayout *vlayout_left;
	QWidget *mainRightWidget;
	QVBoxLayout *vlayout_right;

	QHBoxLayout *hlayout_all;
};

③W_TOOL.cpp

#include "W_TOOL.h"
#include
#include
#include
#include
W_TOOL::W_TOOL(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	initMainWindow();
}
void W_TOOL::initMainWindow()
{
	mainWindowWidget=new QWidget(this);
    mainLeftWidget = new QWidget(this);
	mainRightWidget = new QWidget(this);



	vlayout_left = new QVBoxLayout(this);
	vlayout_right = new QVBoxLayout(this);
	hlayout_all = new QHBoxLayout(this);

	showFilePath = new QLineEdit(this);

	showShrinkPicture = new QLabel(this);
	showShrinkPicture->setStyleSheet("background:rgb(255,255,255)");

	toolBoxTree = new QTreeWidget(this);

	showSrcPicture = new QLabel(this);
	showSrcPicture->setStyleSheet("background:rgb(255,255,255)");

	vlayout_left->addWidget(showShrinkPicture);
	vlayout_left->addWidget(toolBoxTree);
	vlayout_left->setStretchFactor(showShrinkPicture, 1);//设置布局中控件占用空间的比例,所以不用设置控件大小
	vlayout_left->setStretchFactor(toolBoxTree, 3);


	vlayout_right->addWidget(showFilePath);
	vlayout_right->addWidget(showSrcPicture);
	vlayout_right->setStretchFactor(showFilePath, 1);
	vlayout_right->setStretchFactor(showSrcPicture, 10);

	mainLeftWidget->setLayout(vlayout_left);
	mainRightWidget->setLayout(vlayout_right);
	
	hlayout_all->addWidget(mainLeftWidget);
	hlayout_all->addWidget(mainRightWidget);
	hlayout_all->setStretchFactor(mainLeftWidget,1);
	hlayout_all->setStretchFactor(mainRightWidget,3);

	mainWindowWidget->setLayout(hlayout_all);

	setCentralWidget(mainWindowWidget);//将mainWindowWidget设置为主窗口的中心窗口
}

你可能感兴趣的:(Qt5)