QT中按钮如何布局?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中按钮如何布局?相关的知识,希望对你有一定的参考价值。
MyWidget::MyWidget(QWidget *parent, const char *name): QWidget(parent, name)
backbutton = new QPushButton(tr("back"),this);
像上面的代码,按钮是自动在窗口的左上角的,有什么方法把他放到右下角呢? 用代码实现。
举例:
#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中按钮如何布局?的主要内容,如果未能解决你的问题,请参考以下文章