QT-界面居中管理

QT-界面居中管理

码农世界 2024-05-28 前端 81 次浏览 0个评论

        问题:为什么不能对checkbox直接居中,LineEdit可以

        复选框是一个固定大小的控件,不适合填满整个单元格,而相比之下QLineEdit是一个可变大小的控件
关于居中:
  1. lineEdit:lineEdit -> setAlignment(QT::AlignCenter); 这是让文本框中的内容居中
  2. checkbox:没有直接居中的方式,需要设置布局或者setStyleSheet暴力调位置(后者太蠢)
布局管理器 -> 内容容器 -> 复选框
QCheckBox* checkbox = new QCheckBox();//创建复选框
QWidget* widget = new QWidget(); // 创建单元格内容容器
QHBoxLayout* layout = new QHBoxLayout(widget);//创建水平布局管理器
layout -> addWidget(checkbox); // 添加复选框到布局中
layout -> setAlignment(Qt::AlignCenter); // 设置布局内控件居中对齐
ui.tableWidget->setCellWidget(row, col, pWidget);

🔺 

Layout->setAlignment(control, Qt::AlignCenter); //只针对控件control居中
Layout->setAlignment(Qt::AlignCenter);//所有布局内的控件全部居中

 🔺策略 QSizePolicy类 是用来控制控件如何在父布局中缩放和定位(对内容容器)

//在水平和垂直方向上都采用Preferred策略
pWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);//布局策略(水平+垂直)
QSizePolicy::Preferred:控件有一个首选大小,但是如果布局需要,它可以被扩大或缩小。这意味着控件会尽量保持其首选大小,但不是绝对不变,会根据布局需求适当调整。
QSizePolicy::MinimumExpanding:控件至少会占据其最小大小,但它是愿意并且能够扩展以填充额外的空间。
这行代码的意思是设置pWidget在水平和垂直方向上都采用Preferred策略。这意味着pWidget会尽量保持其内部内容(在这个案例中是QCheckBox)的自然大小,但也会根据容器(QTableWidget的单元格)的变化做出适当的调整。

 

转载请注明来自码农世界,本文标题:《QT-界面居中管理》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,81人围观)参与讨论

还没有评论,来说两句吧...

Top