QT中按钮如何布局?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中按钮如何布局?相关的知识,希望对你有一定的参考价值。

MyWidget::MyWidget(QWidget *parent, const char *name): QWidget(parent, name)

backbutton = new QPushButton(tr("back"),this);


像上面的代码,按钮是自动在窗口的左上角的,有什么方法把他放到右下角呢? 用代码实现。

参考技术A 可以采用布局,然后用addStretch()
举例:
#include<QApplication>
#include<QWidget>
#include<QHBoxLayout>
#include<QPushButton>
int main(int argc,char* argv[])

QApplication app(argc,argv);
QWidget *w=new QWidget;
QHBoxLayout *l=new QHBoxLayout(w);
QPushButton *b=new QPushButton(QObject::tr("Close"));
geometry它处于右边,如果要右下角,可以类似的布局
参考技术B 可以采用布局,然后用addStretch()
举例:
#include<QApplication>
#include<QWidget>
#include<QHBoxLayout>
#include<QPushButton>
int main(int argc,char* argv[])

QApplication app(argc,argv);
QWidget *w=new QWidget;
QHBoxLayout *l=new QHBoxLayout(w);
QPushButton *b=new QPushButton(QObject::tr("Close"));
QObject::connect(b,SIGNAL(clicked()),w,SLOT(close()));
l->addStretch();
l->addWidget(b);
w->show();
return app.exec();

还有别的方法,自己捉摸吧……追问

这个好像只能让它处于下方吧,有一个绝对位置方式geometry,虽然能实现,不知道好不好。

追答

这个让它处于右边,如果要右下角,可以类似的布局……绝对定位没多少用过,主要不灵活,改变TOP WIDGET大小后比较那个,还是布局好……

本回答被提问者采纳
参考技术C 一横的:QHBoxlayout,从左到右,一次排你的东西进去,addwidget()

一个竖的:QVBoxlayout从上到下,一次排你的东西进去....

一个网格的,QGridlayout,网格坐标一样,从0,0开始,指定坐标,和要放进去的东西。

QT Designer - 如何创建布局

【中文标题】QT Designer - 如何创建布局【英文标题】:QT Designer - How to create a layout 【发布时间】:2020-12-20 11:35:40 【问题描述】:

我是 QT 新手,尤其是 QT Designer,我发现它非常不直观。

我尝试在 Qt Designer 中实现以下布局。

说明:

黄色 -> 应用程序窗口 蓝色 -> 2 个侧面按钮,高度为红色高度和白色高度 RED -> 应该是蓝色高度的 2/3 左右 白色 -> 也应该是蓝色高度的 1/3 左右

布局:

RED -> 水平布局 白色 -> 水平布局 红色 + 白色 -> 垂直布局 蓝色 +(红色 + 白色)-> 水平布局 (BLUE + (REDs + WHITEs)) + SPACER -> 垂直布局(因为它需要在按钮和应用程序顶部之间留出一些空间)

但是如果我应用我上面所说的那些,我会得到这样的东西:

就我的搜索而言,我可以使用 在拆分器中水平布局在拆分器中水平垂直布局 来保持我想要的纵横比,但是然后我可以拆分应用程序,我不想要那个。 谁能帮我理解我该怎么做?或者这样做的唯一方法是使用 C++?

【问题讨论】:

【参考方案1】:

我想你要找的是QGridLayout。

在 QGridLayout 中,您可以为每个小部件决定它将占据多少行(只需拖动其边框)以及每行/列的各种“权重”(参数称为 rowStretch 或 columnStretch)。

示例: 您的布局可能组成如下:

一个大的黄色矩形是第一个 QGridLayout(1 行 x 5 列),它包含(从左到右):

您的第一个蓝色元素(占用 1 行 1 列); 3 个绿色的 QGridLayouts; 您的第二个蓝色元素(占用 1 行 1 列);

绿色的 QGridLayouts(2 行 x 2 列)是这样配置的:

您的红色元素(占用 1 行 2 列,并且 rowStretch 为 2); 您的第一个白色元素,(占用 1 行 1 列,并且 rowStretch 为 1); 您的第二个白色元素,(占用 1 行 1 列,并且 rowStretch 为 1);

这样,红色和白色元素垂直比例为 2 比 1,并且(因为它们一起占据蓝色元素的同一行)蓝色高度是红色 + 白色的总和。

【讨论】:

以上是关于QT中按钮如何布局?的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 表单的不同布局中调整按钮大小

如何在 Qt 中制作可展开/可折叠的部分小部件

布局中的 Qt 状态机转换

如何在Qt Designer中限制布局的增长(大小)?

qt qtoolbar怎样平均分配按钮位置

qt 布局管理按钮控件间有空隙?