QSplitter在QTabWidget中使用

来源:互联网 发布:大量收购淘宝店铺 编辑:程序博客网 时间:2024/05/18 01:13
今天在使用窗体分割的时候,用到了QSplitter这个控件,初次使用在网上找了个例子,但是例子非常之简单。当然普通的使用肯定是满足的,我是使用在QTabWidget控件中和mainwindow中。在mainwindow中使用是没有问题的,但是在QTabWidget中问题就出现了。刚开始试了好多次,在QTabWidget中添加QSplitter控件都出现了排版的问题,主要为:里面的其他控件不能随窗体放大,不能填充窗体。试了在QTabWidget中添加各类布局,结果:无效。然后我就想应该是和控件的父子Widget有关系,我们必须把里面的层次弄清楚。mainwindow.h代码如下:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QSplitter>#include <QHBoxLayout>
namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();private:    Ui::MainWindow *ui;    QSplitter *hspliter;        //QTabWidget中的水平分割    QSplitter *vspliter;        //mainwindow中的竖直分割    QHBoxLayout *tab_h_layout;  //QTabWidget中的tab的layout};#endif // MAINWINDOW_Hmainwindow.cpp代码如下:#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    tab_h_layout = new QHBoxLayout;    ui->tab->setLayout(tab_h_layout);//手动设置layout    hspliter = new QSplitter(Qt::Horizontal,ui->tab);//设置水平分割,和它的父控件    vspliter = new QSplitter(Qt::Vertical);    hspliter->addWidget(ui->tableView);    hspliter->addWidget(ui->tableView_2);    hspliter->setStretchFactor(1,1);    vspliter->addWidget(ui->tabWidget);    vspliter->addWidget(ui->tableView_3);    vspliter->setStretchFactor(0,21);    vspliter->setStretchFactor(1,1);    tab_h_layout->addWidget(hspliter);    this->setCentralWidget(vspliter);}MainWindow::~MainWindow(){    delete ui;}

程序截图:

ui中显示效果:

层次结构:

运行效果:都是用QTableView控件,这个无关

原创粉丝点击