qt c++ 设置窗口不可拖动
时间: 2023-07-22 16:30:49 浏览: 75
要设置窗口不可拖动,可以通过设置窗口的 Qt::WindowFlags 属性来实现。具体操作如下:
```
// 获取当前窗口的 Qt::WindowFlags 属性
Qt::WindowFlags flags = windowFlags();
// 设置窗口属性为不可拖动
setWindowFlags(flags & ~Qt::WindowMaximizeButtonHint & ~Qt::WindowMinimizeButtonHint & ~Qt::WindowCloseButtonHint & ~Qt::WindowStaysOnTopHint & ~Qt::Window);
// 重新显示窗口
show();
```
在上面的代码中,我们首先获取当前窗口的 Qt::WindowFlags 属性,然后通过位运算的方式将窗口的最大化、最小化、关闭、置顶以及可移动属性都取消掉,最后重新显示窗口即可。
需要注意的是,如果你想在运行时将窗口属性设置为不可拖动,建议在窗口显示前设置,否则可能会出现窗口闪烁的情况。
相关问题
qt c++ 设置窗口不可以拉顶部拖动
要设置窗口不可拉拽顶部进行拖动,可以重载 QWidget 的 `mousePressEvent` 和 `mouseMoveEvent` 方法,然后在 `mousePressEvent` 中记录下鼠标点击时的坐标,然后在 `mouseMoveEvent` 中计算鼠标移动的距离,如果鼠标移动的距离在一定范围内,则不移动窗口,否则移动窗口。
具体实现如下:
```
void MyWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton && event->pos().y() < 30) {
m_drag = true;
m_startPos = event->globalPos() - frameGeometry().topLeft();
}
QWidget::mousePressEvent(event);
}
void MyWidget::mouseMoveEvent(QMouseEvent *event)
{
if (m_drag) {
QPoint pos = event->globalPos() - m_startPos;
if (pos.y() < 0) {
pos.setY(0);
}
move(pos);
}
QWidget::mouseMoveEvent(event);
}
void MyWidget::mouseReleaseEvent(QMouseEvent *event)
{
m_drag = false;
QWidget::mouseReleaseEvent(event);
}
```
在上面的代码中,我们重载了 QWidget 的 `mousePressEvent`、`mouseMoveEvent` 和 `mouseReleaseEvent` 三个方法,其中 `m_drag` 表示当前是否在拖动窗口,`m_startPos` 表示鼠标点击时的坐标。
在 `mousePressEvent` 中,如果鼠标左键点击并且点击的位置在窗口的顶部,则设置 `m_drag` 为真,并记录下鼠标点击时的坐标。
在 `mouseMoveEvent` 中,如果 `m_drag` 为真,则计算鼠标移动的距离,并根据移动的距离来移动窗口。需要注意的是,我们在移动窗口时,需要判断窗口移动后的位置是否超出了屏幕范围,如果超出了,则需要将窗口移动到屏幕边缘。
在 `mouseReleaseEvent` 中,将 `m_drag` 设置为假。
这样,就可以实现设置窗口不可拉拽顶部进行拖动的效果了。
c++ qt5.9 设置qcomboBox 不可编辑
要设置QComboBox为不可编辑,可以使用setEditable()函数。将其设置为false即可禁用编辑功能。
示例代码:
```c++
QComboBox *comboBox = new QComboBox(parent);
comboBox->setEditable(false); // 设置为不可编辑
```
这样,用户就无法通过鼠标或键盘输入文本了,只能从下拉列表中选择选项。