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 之多种布局展示 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐