问题:为什么不能对checkbox直接居中,LineEdit可以
复选框是一个固定大小的控件,不适合填满整个单元格,而相比之下QLineEdit是一个可变大小的控件
关于居中:
- lineEdit:lineEdit -> setAlignment(QT::AlignCenter); 这是让文本框中的内容居中
- 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的单元格)的变化做出适当的调整。 |
还没有评论,来说两句吧...