QT 之多种布局展示

2023-11-15

QT布局


一、QHBoxLayout/QVBoxLayout

1.layout通过使用setcontentmargins来设置四周留白的间隔
函数原型:void QLayout::setContentsMargins ( int left, int top, int right, int bottom )

 	layout1->setContentsMargins(1,0,1,0);

2.layout可以使用setMargin()在控件内部的边距设置;
3.layout可以使用addStretch()在布局里面添加弹簧;
**4.**layout可以使用 setspacing设置控件之间的间隔;注:设置无效的可能原因有,总布局里添加控件的时候设置了比例,如图所示,去掉那个比例就可以了.​​​​​​​​在这里插入图片描述
5.setStretchFactor设置布局里某控件之间的比例;

	mainLayout->setStretchFactor(m_listWidget,1);
    mainLayout->setStretchFactor(m_stackWidget,9);

二、QFont(大小/颜色)

1.设置字体的大小:
代码如下(示例):

    QFont ft;
    ft.setPointSize(25);//字体大小
    m_titleLabel->setFont(ft);//其他控件也一样

2.设置字体颜色:
a.样式:

	m_titleLabel = new QLabel(tr("客户端"),this);
    m_titleLabel->setStyleSheet("color:yellow;");

b.调色板:

	QLabel *lable = new QLabel("系统已就绪  ", this);
    QPalette pe;
    pe.setColor(QPalette::WindowText, Qt::white);//设置颜色
    lable ->setPalette(pe);

三、QLinearGradient (颜色渐变—应用背景渐变)

代码如下(示例):

    frame->setStyleSheet("background-color:qlineargradient(spread:pad,x1:0, y1:0, x2:1, y2:0,stop:0 #030303,stop:0.5 #030303 ,stop:1 #2E8B57)");

a. spread:pad:渐变的模式为 pad,另外的两个模式为 repeat、reflect。

b. x1、y1、x2、y2 四个坐标表示渐变的坐标范围。

c. x1、y1 对应为左上角坐标,x2、y2 对应右下角坐标,其后面的数字是 0 和 1,表示渐变的顺序。后面的 stop 后面的数值(0 到 1 之间)就是按照数字的大小顺序确定方向来改变颜色。

说明: stop:0 #030303 就是在坐标为 0 的点设置颜色为 #030303 也就是黑色;
stop:0.5 #030303 就是在坐标为 0.5 的位置改变颜色。
上面代码的效果:
​​在这里插入图片描述


四、QGroupBox分组框

前言:分组框通常带有一个边框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件。通常带有一个边框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件。布局时可用作一组控件的容器,但是需要注意的是,内部必须使用布局控件(如QBoxLayout)进行布局。
代码如下(示例):

	//创建复选框
    QGroupBox *groupBox = new QGroupBox(tr("服务器配置"));
    groupBox->setFlat(false);//边框是否有线
    groupBox->setCheckable(true);//是否有复选框
    groupBox->setChecked(false);//默认是否勾选复选框
   
    QHBoxLayout *mlayout = new QHBoxLayout();
    m_ipLabel = new QLabel(tr("服务器ip:"));
    m_ipLabel->setFixedSize(120,30);
    m_ipLineEdit = new QLineEdit(this);
    m_ipLineEdit->setFixedSize(180,40);
    m_portLabel = new QLabel(tr("服务器端口:"));
    
    mlayout->addWidget(m_ipLabel);
    mlayout->addWidget(m_ipLineEdit);
    mlayout->addStretch();
    groupBox->setLayout(mlayout); //往里面添加布局

1.setFlat(bool)是否扁平化
组框通常由顶部带有标题的周围框架组成。如果启用此属性,则大多数样式只绘制框架的顶部;否则,将绘制整个框架


五、QSS(结合setStyleSheet使用)

以QGroupBox为例:
qss文件

	QGroupBox
	{
	border: 2px solid red;
	border-radius:5px;
	margin-top:2ex;//文字在方框中位置的偏离度---以上边缘为基线
	font-family:楷体;
	font:bold 28px; //字体大小
	} 
	QGroupBox::title
	{
	subcontrol-origin:margin;
	subcontrol-position:top left;
	left:7px;//标题偏离左边缘的距离
	margin-left: 0px;
	padding:0.1px;
}

代码setStyleSheet的方式设置
代码如下(示例):

	groupBox->setStyleSheet("QGroupBox {border-width:1px;border-style:solid;border-color:lightGray;margin-top:1.5ex;}"\
                            "QGroupBox::title{subcontrol-origin:margin;subcontrol-position:top left;left:7px;margin-left: 0px;padding:0.1px;}");

基本样式设置含义:

font-family:楷体; 为设置字体类型,标准形式需要加双引号,不加也可能会生效,具体看系统是否支持,中英文都支持,但要保证字体编码支持,一般程序编码为"utf-8"时没问题。
font-style:normal;为设置字体斜体样式,italic 为斜体, normal 为不斜体,oblique(倾斜).
font-weight:bold;为设置字体加粗样式,bold 为加粗, normal 为不加粗;
**font-size: 14px;**设置字体大小.
注:字体同时设置时的顺序 style weight size family .
**color: #BDC8E2;**设置字体颜色,可以使用十六进制数表示颜色,也可以使用某些特殊的字体颜色:red, green, blue 等,或者使用 rgb(r,g,b) 和 rgba(r,g,b,a) 来设置,其中 r、g、b、a 值为0~255.

**padding-left: 10px;**设置文字距离左边边界的距离.
**padding-top: 8px;**设置文字距离顶边边界的距离.
**padding-right: 7px;**设置文字距离右边边界的距离.
**padding-bottom: 9px;**为设置文字距离底边边界的距离.

border-style 为设置边框样式,solid 为实线, dashed 为虚线, dotted 为点线, none 为不显示(如果不设置 border-style 的话,默认会设置为 none).
border-width: 2px 为设置边框宽度,单位为 px 像素.
border-color 为设置边框颜色.
注:同时设置的顺序width style color.

**background-color: #2E3648;**设置背景颜色.
**background-image: url(“./image.png”);**设置背景图片,图片路径为 url(image-path).
background-repeat: no-repeat; 为设置背景图是否重复填充背景.
background-position: left center;设置背景图片显示位置,只支持 left right top bottom center;

可参考:
CSS font-family字体大合集

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT 之多种布局展示 的相关文章

  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐