困扰我很久的QT问题一
环境介绍
VS2015 [Debug/Release x86] Qt 5.10.0 ;
一、效果
二、实现
1、嵌套布局
2、设置中心窗口
三、代码
①main.cpp
#include "W_TOOL.h"
#include <QtWidgets/QApplication>
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 <QtWidgets/QMainWindow>
#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<QLabel>
#include<QVBoxLayout>
#include<QLineEdit>
#include<QTreeWidget>
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设置为主窗口的中心窗口
}