c++ qt 设置控件据边框距离
时间: 2023-09-20 22:13:31 浏览: 278
在 Qt 中,可以使用 QWidget::setContentsMargins() 方法来设置控件与边框之间的距离。该方法接受四个参数,分别对应左、上、右、下四个方向的距离。
例如,如果要将一个 QLabel 控件与其父控件的边框保持 10 像素的距离,可以这样写:
```cpp
QLabel *label = new QLabel(parent);
label->setText("Hello, world!");
label->setContentsMargins(10, 10, 10, 10);
```
注意,这里的距离是指控件与边框之间的距离,而非控件之间的距离。如果要设置控件之间的间距,可以考虑使用布局管理器。
相关问题
C++ QT控件border 下边框不显示怎么办
可以尝试以下几种方法:
1. 使用QSS样式表设置下边框的颜色和宽度,例如:
```
border-bottom: 2px solid #000000;
```
这里设置下边框为2像素宽,黑色实线。
2. 在QT控件的paintEvent()事件中手动绘制下边框,例如:
```
void MyWidget::paintEvent(QPaintEvent *event)
{
QWidget::paintEvent(event);
QPainter painter(this);
painter.setPen(QPen(Qt::black, 2));
painter.drawLine(0, this->height(), this->width(), this->height());
}
```
这里在控件底部手动绘制一条2像素宽的黑色线条。
希望能帮到你!
qt c++ 自定义一个继承QToolBox的控件 实现可设置选项卡的尺寸
你可以通过自定义一个继承自QToolBox的控件,重写其paintEvent函数,在绘制选项卡时设置不同的尺寸,从而实现可设置选项卡的尺寸。
以下是一个简单的示例代码:
```cpp
class MyToolBox : public QToolBox
{
public:
MyToolBox(QWidget *parent = nullptr) : QToolBox(parent) {}
protected:
void paintEvent(QPaintEvent *event) override
{
QStylePainter painter(this);
painter.setPen(palette().color(QPalette::Mid));
painter.setBrush(palette().brush(QPalette::Window));
painter.drawRect(rect().adjusted(0, 0, -1, -1));
QFontMetrics fm(font());
int tabHeight = fm.height() + 20; // 20为选项卡高度的偏移量
for (int i = 0; i < count(); ++i) {
QRect r = tabRect(i);
painter.save();
if (currentIndex() == i) {
painter.setPen(palette().color(QPalette::WindowText));
painter.setBrush(palette().brush(QPalette::Window));
painter.drawRect(r.adjusted(0, 0, 0, 0));
}
painter.translate(r.topLeft());
QFont f = font();
f.setBold(currentIndex() == i);
painter.setFont(f);
painter.drawText(10, tabHeight / 2 + fm.ascent() - fm.height() / 2, tabText(i));
painter.restore();
}
}
};
```
在上述代码中,我们通过重写paintEvent函数,首先绘制一个矩形框作为整个控件的边框。然后遍历所有的选项卡,获取各自的矩形区域,并在其中绘制相应的文本。在绘制选项卡文本时,我们增加了一个偏移量20,用于设置选项卡的高度。你可以根据实际情况调整偏移量的大小。
阅读全文