2014-10-20 81 views
1

我有一个水平布局,其中我添加了一个组框。组框使用QSplitter分割并包含QListWidgetQTextBrowser。我想在窗口的右下角添加两个按钮来在QTextBrowser内导航。我在布局中添加了两个按钮,但无法将其添加到右下角。这里是我的代码:在布局中添加向前和向后按钮

_groupBox = new QGroupBox(); 
    _groupBox->setTitle("Config Help System"); 
    _verticalLayout = new QVBoxLayout(_groupBox); 
    this->setLayout(_verticalLayout); 
    _splitter = new QSplitter(_groupBox); 
    _splitter->setOrientation(Qt::Horizontal); 

    _list = new QListWidget(_splitter); 
    QListWidgetItem *item1 = new QListWidgetItem; 
    item1->setText("About Config Tool"); 
    _list->insertItem(0, item1); 
    QListWidgetItem *item2 = new QListWidgetItem; 
    item2->setText("Configuration Help"); 
    _list->insertItem(1, item2); 
    _list->setSelectionMode(QAbstractItemView::SingleSelection); 
    _splitter->addWidget(_list); 

    _helpBrowser = new QTextBrowser(_splitter); 
    _homeButton = new QPushButton(tr("&Home"), this); 
    _backButton = new QPushButton(tr("&Back"), this); 
    _closeButton = new QPushButton(tr("&Close"), this); 

    QHBoxLayout *buttonLayout = new QHBoxLayout(this); 
    buttonLayout->addWidget(_homeButton); 
    buttonLayout->addWidget(_backButton); 
    buttonLayout->addStretch(1); 
    buttonLayout->addWidget(_closeButton) 

    _splitter->addWidget(_helpBrowser); 
    _splitter->setStretchFactor(1,1); 

    _verticalLayout->addWidget(_splitter); 
    this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); 
    this->resize(1000,600); 

我试过了拉伸因子来调整按钮出现在分离器的右下角。任何人都可以帮我一下吗?

回答

1

试试这个(代码略有不同,因为我想在我的计算机上运行它):

QWidget *www = new QWidget; 
QGroupBox* _groupBox = new QGroupBox(); 
_groupBox->setTitle("Config Help System"); 
QVBoxLayout *_verticalLayout = new QVBoxLayout(_groupBox); 
www->setLayout(_verticalLayout); 
QSplitter *_splitter = new QSplitter(_groupBox); 
_splitter->setOrientation(Qt::Horizontal); 

QListWidget *_list = new QListWidget(_splitter); 
QListWidgetItem *item1 = new QListWidgetItem; 
item1->setText("About Config Tool"); 
_list->insertItem(0, item1); 
QListWidgetItem *item2 = new QListWidgetItem; 
item2->setText("Configuration Help"); 
_list->insertItem(1, item2); 
_list->setSelectionMode(QAbstractItemView::SingleSelection); 
_splitter->addWidget(_list); 

QTextBrowser *_helpBrowser = new QTextBrowser(_splitter); 
QPushButton* _homeButton = new QPushButton("home"); 
QPushButton* _backButton = new QPushButton("back"); 
QPushButton *_closeButton = new QPushButton("close"); 

QHBoxLayout *buttonLayout = new QHBoxLayout(this); 
buttonLayout->addWidget(_closeButton);//new 
buttonLayout->addStretch(1); 
buttonLayout->addWidget(_homeButton);//new 
buttonLayout->addWidget(_backButton);//new 


_splitter->addWidget(_helpBrowser); 
_splitter->setStretchFactor(1,1); 

_verticalLayout->addWidget(_splitter); 

_verticalLayout->addLayout(buttonLayout);//new 

www->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); 
www->resize(1000,600); 
www->show(); 

结果:

enter image description here

编辑:

#include <QGroupBox> 
#include <QListWidget> 
#include <QTextBrowser> 
#include <QListWidgetItem>//do different includes to use my code inside main 

//... 

QHBoxLayout *buttonLayout = new QHBoxLayout;//just remove the parent 
+0

添加HBoxLayout到VBoxLayout不适合我。我得到一个错误,说QLayout :: AddChildLayout:布局已经有一个家长 – Beginner 2014-10-21 04:23:22

+0

@ user3035979不幸的是不能说没有你的代码的问题在哪里,所以我认为你用我的例子错了。尝试复制并粘贴我的例子在你的主要功能,并做连接,并删除父。之后,说我很好,否则你还会得到这个错误。 – Chernobyl 2014-10-22 19:16:08

+0

我使用网格布局而不是vboxlayout和hboxlayout。该代码适用于我。还是要谢谢你的帮助 :) – Beginner 2014-10-23 04:57:25