qt 创建一个包含两按钮,且安装和自定义控件间没有间距

在 Qt 中创建一个包含两个按钮且按钮之间没有间距的自定义控件,你可以使用 QHBoxLayoutQVBoxLayout(取决于你希望按钮是水平排列还是垂直排列),并设置布局的间距为 0。以下是一个简单的示例,展示了如何创建一个水平布局,其中包含两个按钮,并且这两个按钮之间没有间距:

|---|-----------------------------------------------------------|
| | #include <QWidget> |
| | #include <QPushButton> |
| | #include <QHBoxLayout> |
| | |
| | // ... |
| | |
| | QWidget *createCustomWidget() { |
| | QWidget *customWidget = new QWidget; |
| | QHBoxLayout *layout = new QHBoxLayout(customWidget); |
| | |
| | // 设置布局间距为0 |
| | layout->setSpacing(0); |
| | layout->setContentsMargins(0, 0, 0, 0); // 设置布局的外边距也为0 |
| | |
| | QPushButton *button1 = new QPushButton("Button 1"); |
| | QPushButton *button2 = new QPushButton("Button 2"); |
| | |
| | layout->addWidget(button1); |
| | layout->addWidget(button2); |
| | |
| | return customWidget; |
| | } |
| | |
| | // ... |

在这个例子中,createCustomWidget 函数创建了一个新的 QWidget,并使用 QHBoxLayout 作为其布局。布局中的间距和外边距都被设置为 0,以确保按钮之间以及按钮和控件边界之间没有额外的空间。然后,两个 QPushButton 控件被添加到布局中。

你可以在你的主窗口或者其他容器中使用这个自定义控件。例如,你可以在你的主窗口的构造函数中这样使用它:

|---|--------------------------------------------------------------------|
| | #include "mainwindow.h" |
| | #include <QApplication> |
| | #include <QWidget> |
| | #include <QPushButton> |
| | #include <QHBoxLayout> |
| | |
| | MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { |
| | QWidget *centralWidget = new QWidget(this); |
| | setCentralWidget(centralWidget); |
| | |
| | QWidget *customControl = createCustomWidget(); |
| | centralWidget->setLayout(new QVBoxLayout); |
| | centralWidget->layout()->addWidget(customControl); |
| | } |
| | |
| | // ... |
| | // 之前定义的 createCustomWidget 函数 |
| | // ... |

在这个例子中,MainWindow 的中心部件被设置为一个新的 QWidget,它使用 QVBoxLayout 作为布局。然后,将之前创建的自定义控件添加到这个布局中。这样,主窗口就会显示两个紧密相连的按钮,它们之间没有间距。

相关推荐
电饭叔25 分钟前
《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学
开发语言·python
Eternal-Student26 分钟前
everyday_question dq20240731
开发语言·arm开发·php
卑微求AC42 分钟前
(C语言贪吃蛇)11.贪吃蛇方向移动和刷新界面一起实现面临的问题
c语言·开发语言
程序猿小D1 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
Yvemil71 小时前
RabbitMQ 入门到精通指南
开发语言·后端·ruby
潘多编程1 小时前
Java中的状态机实现:使用Spring State Machine管理复杂状态流转
java·开发语言·spring
冷静 包容2 小时前
C语言学习之 没有重复项数字的全排列
c语言·开发语言·学习
碳苯2 小时前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os
结衣结衣.2 小时前
C++ 类和对象的初步介绍
java·开发语言·数据结构·c++·笔记·学习·算法
学习使我变快乐2 小时前
C++:静态成员
开发语言·c++