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 作为布局。然后,将之前创建的自定义控件添加到这个布局中。这样,主窗口就会显示两个紧密相连的按钮,它们之间没有间距。

相关推荐
biter down6 小时前
14:pytest-order 插件 顺序控制案例
开发语言·python·pytest
郝学胜-神的一滴6 小时前
Qt 高级开发 009: C++ Lambda 表达式
开发语言·c++·qt·软件构建
星栈独行6 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
石山代码6 小时前
C++ 轻量级日志系统
开发语言·c++
小技与小术7 小时前
玩转Flask
开发语言·python·flask
SilentSamsara7 小时前
Python 性能优化:tracemalloc、profiling 与 C 扩展加速
开发语言·python·青少年编程·性能优化
冰小忆7 小时前
大驼峰命名规范和小驼峰命名规范的区别是什么?
开发语言·python
এ慕ོ冬℘゜9 小时前
JS 前端基础面试题
开发语言·前端·javascript
浩少7029 小时前
【无标题】
java·开发语言
nnsix9 小时前
C# 字符串 根据换行符分割
开发语言·c#