QT向界面中嵌套新的界面

簡單說下 想要實現的內容函數

咱們有一個主窗口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,操做更方便哦

相關文章
相關標籤/搜索