c++ qt widget 去掉边框
时间: 2023-08-01 18:10:36 浏览: 139
要去掉Qt Widget的边框,可以使用QWidget::setWindowFlags()函数来设置窗口标志。具体来说,可以使用以下代码将窗口标志设置为Qt::FramelessWindowHint,以去掉边框:
```cpp
setWindowFlags(Qt::FramelessWindowHint);
```
需要注意的是,将窗口标志设置为Qt::FramelessWindowHint会导致窗口失去标题栏和边框,这意味着你需要自己实现窗口的拖动和调整大小功能。
相关问题
qt widget paint边框
要在 Qt Widget 中绘制边框,可以使用 QPainter 类的 drawRect() 方法。以下是一个示例:
```c++
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setPen(QPen(Qt::black, 2)); // 设置画笔颜色和宽度
painter.drawRect(rect()); // 绘制矩形边框
}
```
在这个示例中,我们在 MyWidget 类的 paintEvent() 方法中使用 QPainter 来绘制边框。我们设置画笔的颜色和宽度,并使用 drawRect() 方法绘制一个矩形边框。rect() 方法用于获取 MyWidget 控件的矩形区域。
注意,paintEvent() 方法是在 Widget 需要绘制时自动调用的。因此,我们不需要手动调用它。
QT c++ 去除界面边框
你可以通过设置窗口的 `Qt::FramelessWindowHint` 标志来去除界面边框,具体操作如下:
```cpp
// 去除窗口边框
setWindowFlags(Qt::FramelessWindowHint);
```
此外,你还需要重写窗口的 `mousePressEvent`、`mouseMoveEvent` 和 `mouseReleaseEvent` 函数,以实现窗口的拖动。具体实现方式可以参考如下代码:
```cpp
// 鼠标按下事件
void Widget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_dragging = true;
m_dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
// 鼠标移动事件
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if (m_dragging && (event->buttons() & Qt::LeftButton)) {
move(event->globalPos() - m_dragPosition);
event->accept();
}
}
// 鼠标释放事件
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
Q_UNUSED(event);
m_dragging = false;
}
```
其中,`m_dragging` 和 `m_dragPosition` 分别表示是否正在拖拽窗口和拖拽起始位置,可以定义为类成员变量。
阅读全文