如何在 QTabWidget 中为选项卡设置布局
How can I set a layout to a tab in QTabWidget?
我已经使用Qt设计工具创建了一个QTabWidget
(没有选项卡(,现在我需要动态创建选项卡并添加小部件。
我可以使用以下代码创建选项卡并添加小部件:
MyCustomWidget *myCustomWidget = new MyCustomWidget(this);
ui->myTabWidget->addTab(myCustomWidget, "New Tab");
问题是小部件停留在QTabWidget
的左上角,但我需要将其对齐在QTabWidget
的中心(水平(。
如何为创建的这个新选项卡设置水平布局?
注1:我的小部件(MyCustomWidget
(具有固定大小。
注2:我使用的是Qt 5.3。
您可以使用 QT 设计器。选择 QTabWidget 并让需要更改其布局的选项卡可见(并且它必须包含元素,例如 QLabel 等(。垂直右键单击>布局>布局问题是在Qwidget上做这件事很直观,而你必须在QTabWidget上做。
它将始终位于左上角。您可以在您的小部件上添加另一个小部件,他们将您的小部件放在该小部件的中间,或者使您的小部件大小与选项卡相同并将其内容放置在中间。您可以使用QWidget setLayout
方法来设置小部件布局。
你不需要QFrame,一个简单的QWidget和一个居中布局就可以了:
auto w = new QWidget;
auto txtEdit = new QTextEdit; // Replace with whatever custom widget
txtEdit->setFixedSize(150, 150); // Only here to simulate your fixed size
auto layout = new QVBoxLayout;
layout->addWidget(txtEdit, 0, Qt::AlignHCenter);
w->setLayout(layout);
ui->tabWidget->addTab(w, "MyTab");
我使用的是基于 QT 5.11.1 的 QT Creator 4.7.0。我无法使用QT设计器更改QTabWidget选项卡的布局。布局中的所有项目均被禁用。我很奇怪。我解决此问题的唯一方法是编辑 ui 文件(在我的情况下,主窗口.ui 文件(。从:
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Insert Object</string>
</attribute>
</widget>
自:
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Insert Object</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
</layout>
</widget>
因此,QTabWidget选项卡的布局已更改。谢谢。
@Satus的想法,我创建了一个新QFrame
,将最小大小设置为myTabWidget的大小,设置水平布局并在其中添加myCustomWidget,添加两个QSpacerItem
(左和右(:
QFrame *frame= new QFrame(this);
frame->setMinimumWidth(ui->myTabWidget->width());
frame->setMinimumHeight(ui->myTabWidget->height());
MyCustomWidget *myCustomWidget = new MyCustomWidget(frame);
QHBoxLayout *hLayout = new QHBoxLayout();
hLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding));
hLayout->addWidget(myCustomWidget);
hLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding));
frame->setLayout(hLayout);
ui->myTabWidget->addTab(frame, "New Tab");
它奏效了,但如果有人有更优雅的方式,请与我们分享。
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 通过选项卡的文本设置QTabWidget顺序
- 如何在提升程序选项中设置矢量<矢量>的默认值<string>
- 错误:必须设置CMake工具才能生成.在工具包选项中配置CMake工具
- 设置QTabWidget中各个选项卡的颜色
- 在 QTabWidget 中动态设置单个选项卡的样式
- 提升::P设置选项无法使所有参数都处于位置状态
- 设置复选框选项C++
- 我可以通过设置工具链文件来替换调用 cmake -G<generator> 选项和调用 vcvarsall.bat吗?
- 在现代CMAKE中设置全球选项
- 如何在 libgit2 中设置结帐选项以使其表现得像"git checkout"
- 转到特定页面后,如何将滑动视图的当前索引设置为选项卡栏"by reference"的当前索引?
- 如何在 QTabWidget 中为选项卡设置布局
- 使用 API 而不是全局配置文件设置 OSM 配置选项
- VS2017:如何在不破坏我设置的过滤器的情况下,以.vcxproj编写每个文件的选项?
- boost::p rogram_options:是否可以将一个选项设置为另一个选项的默认值
- 如何设置Clang-Format样式选项,以在捕获前保持不合格
- Winapi设置活动选项卡控件
- 如何设置 windows 文件打开对话框筛选器以包含"必须完成"选项
- 将set选项设置为默认值