c++ - 如何调整大小和区域对齐无框窗口 qt6
问题描述
我在 qt 设计器中设计了一个表单
我还通过使用使我的程序无框架,Qt::FramelessWindowHint
目前Qt::WA_TranslucentBackground
我以这种方式在我的程序中手动编码拖动窗口
bool Qt6Gui::eventFilter(QObject* obj, QEvent* event)
{
switch (event->type())
{
case QEvent::MouseButtonDblClick:
{
auto* mouseEvent = static_cast<QMouseEvent*>(event);
if (obj == ui.titleRightInfo && mouseEvent->buttons() & Qt::MouseButton::LeftButton)
QTimer::singleShot(250, this, &Qt6Gui::maximize_restore);
}
break;
case QEvent::MouseButtonPress:
{
if (obj == ui.titleRightInfo)
{
auto* mouseEvent = static_cast<QMouseEvent*>(event);
if (mouseEvent->buttons() & Qt::MouseButton::LeftButton)
{
mouse_pos = ui.titleRightInfo->mapToGlobal(mouseEvent->pos());
onMove = true;
}
}
}
break;
case QEvent::MouseMove:
{
if (obj == ui.titleRightInfo && onMove)
{
auto* mouseEvent = static_cast<QMouseEvent*>(event);
if (mouseEvent->buttons() & Qt::MouseButton::LeftButton)
{
auto glb_mousepos = ui.titleRightInfo->mapToGlobal(mouseEvent->pos());
auto delta = glb_mousepos - mouse_pos;
if (delta.x() || delta.y())
{
auto newpos = this->pos() + delta;
mouse_pos = glb_mousepos;
if (GLOBAL_STATE == 1)
maximize_restore();
this->move(newpos);
}
}
}
}
break;
case QEvent::MouseButtonRelease:
{
if (obj == ui.titleRightInfo && onMove)
{
auto pos = this->mapToGlobal(QPoint(0, 0));
if (pos.y() < 0)
{
auto old_pos = this->pos();
this->move(old_pos.x(), old_pos.y() - pos.y() + 1);
}
onMove = false;
}
}
break;
}
return QWidget::eventFilter(obj, event);
}
它的工作没有任何问题,但它缺少areo
,而且我使用QSizeGrip调整我的程序大小
QSizeGrip* sizegrip = new QSizeGrip(ui.frame_size_grip);
sizegrip->setStyleSheet("width: 20px; height: 20px; margin 0px; padding: 0px;");
它也可以工作,但仅可用于我程序的一侧
我的问题是我希望能够使用areo snap来调整我的程序大小(并且还能够从所有边缘调整它的大小),我找到了一些解决方案(像这样和这个)但它们都没有像我一样工作(可能是因为我正在使用设计器ui文件)我想知道它可以将窗口与其他窗口对齐并在拖动到屏幕边缘时调整它的大小,就像我们使用正常时一样窗框?并且还可以自由地从所有边缘调整它的大小?
感谢帮助
解决方案
经过一番搜索,我终于在 github 上找到了这正是我想要的。
推荐阅读
- java - 谁能建议如何使用firebase轻松跟踪应用程序按钮点击?
- android - 从底部导航视图 Android 清除菜单时遇到故障
- regex - 正则表达式不适用于 \ 和 ]
- r - 如何对数据框中特定列的复制行求和?
- angular - 如何在 Angular 5 的 ng-multi-select 下拉列表中添加文本字段或 html
- reactjs - 如何使用 momentJs 在 React 中计算下一个生日的剩余天数?
- php - simplexml_load_file 不适用于 codeigniter Php
- python - vscode python linux:调试控制台中的更改不会出现在'variables->locals'调试窗格中
- maven - BitBucket Server Maven 错误:默认包 '.' Import-Package 语法不允许
- amazon-web-services - 是否可以通过 AWS lambda 函数打开网页?