簡單說下 想要實現的內容函數
咱們有一個主窗口mainwindow,須要向其中放入新的界面,你能夠本身定義裏面內容。佈局
大體的效果圖以下ui
實現起來就是利用QT的layout佈局 使用水平佈局QHboxlayout或QVboxLayoutthis
第一步,先進入ui編輯界面,加入一個水平或者垂直的佈局(根據本身選則,我用水平)充滿整個mainwindowspa
注意右邊我更改了 QHBoxLayout的名稱 爲pHBoxLayout指針
而後運行一遍 ;(注意須要運行一遍 要否則類找不到pHBoxLayout 這個佈局)code
接着定義一個方法(向mainwindow增長窗口的方法) (mainwindow.cpp)blog
1 void MainWindow::putwidget(QWidget* widget) 2 { 3 ui->pHBoxLayout->addWidget(widget); 4 }
新建一個class文件 定義爲myWidget名稱 inherent QObject和QWidgetget
在類名myWidget後面增長 :public QWidget編譯
在myWidget中增長該窗口的背景色 區分其餘區域
1 myWidget::myWidget() 2 { 3 this->setAttribute(Qt::WA_StyledBackground,true); 4 this->setStyleSheet("background-color: rgb(255,255, 255)"); 5 }
在main函數中添加(main.cpp)
myWidget *widget=new myWidget(); w.putwidget(widget);
編譯運行一下
獲得以下結果
後面的工做比較重複 就是慢慢增長左右佈局,再將佈局添加控件
注意兩點:
新建一個layout佈局時須要指定父類在括號中 leftWidget爲須要定義佈局的控件
1 QVBoxLayout *PHVBoxLayout=new QVBoxLayout(leftWidget);
定義這個控件時,須要定義指針形式
mywidget文件的代碼爲
#include "myWidget.h" #include <QHBoxLayout> #include <QVBoxLayout> myWidget::myWidget() { this->setAttribute(Qt::WA_StyledBackground,true); this->setStyleSheet("background-color: rgb(255,255, 255)"); QWidget *leftWidget=new QWidget(); leftWidget->setStyleSheet("background-color: rgb(255,100, 255)"); QWidget *rightWidget=new QWidget(); rightWidget->setStyleSheet("background-color: rgb(255,255, 100)"); QHBoxLayout *PHBoxLayout=new QHBoxLayout(this); PHBoxLayout->addWidget(leftWidget); PHBoxLayout->addWidget(rightWidget); QWidget *lefttopWidget=new QWidget(); lefttopWidget->setStyleSheet("background-color: rgb(100,255, 100)"); QWidget *leftdownWidget=new QWidget(); leftdownWidget->setStyleSheet("background-color: rgb(255,100, 100)"); QVBoxLayout *PHVBoxLayout=new QVBoxLayout(leftWidget); PHVBoxLayout->addWidget(lefttopWidget); PHVBoxLayout->addWidget(leftdownWidget); QWidget *rightleftWidget=new QWidget(); rightleftWidget->setStyleSheet("background-color: rgb(100,100, 100)"); QWidget *rightrightWidget=new QWidget(); rightrightWidget->setStyleSheet("background-color: rgb(155,100, 30)"); QHBoxLayout *PHHBoxLayout=new QHBoxLayout(rightWidget); PHHBoxLayout->addWidget(rightleftWidget); PHHBoxLayout->addWidget(rightrightWidget); }
最後代碼以下 就幾kb
連接:https://pan.baidu.com/s/1XenhRn2-qnuHzz_vo2BfHg 提取碼:88y3 複製這段內容後打開百度網盤手機App,操做更方便哦