在布局中添加前进和后退按钮
Posted
技术标签:
【中文标题】在布局中添加前进和后退按钮【英文标题】:Adding forward and back buttons inside a layout 【发布时间】:2014-10-20 11:52:55 【问题描述】:我有一个水平布局,我在其中添加了一个组框。使用QSplitter
拆分组框并包含QListWidget
和QTextBrowser
。我想在窗口的右下角添加两个按钮以在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();
结果:
编辑:
#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
【讨论】:
将 HBoxLayout 添加到 VBoxLayout 对我来说效果不佳。我收到一条错误消息,提示 QLayout::AddChildLayout: layout already has a parent @user3035979 不幸的是,如果没有您的代码,就无法说出问题出在哪里,所以我认为您使用我的示例是错误的。尝试将我的示例复制并粘贴到您的主函数中,然后进行连接并删除父级。然后说我很好,否则你仍然会收到这个错误。 我使用了网格布局而不是 vboxlayout 和 hboxlayout。该代码对我来说很好。无论如何感谢您的帮助:)以上是关于在布局中添加前进和后退按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何将pyqt5中的后退按钮和前进按钮添加到我的QGridLayout
用iframe后 点后退按钮时总是在潜套框里后退,如何让整个父页面整体后退呢?