QT4拖动窗口没有标题栏

2023-11-26

我正在开发的应用程序有一个自定义 UI,需要我从主窗口中删除标题栏。不幸的是,我不知道如何制作它,以便我可以在屏幕上移动应用程序:)

我删除标题栏的代码如下:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent, Qt::CustomizeWindowHint), ui(new Ui::MainWindowClass)
{
    ui->setupUi(this);

知道如何使用另一个小部件或主窗体窗口本身来移动窗口吗?

Thanks


最直观的方法是单击小部件表面并拖动。为了实现这一目标,您需要遵循一些步骤。

该方法如下:当用户在小部件内部按下时,设置一个布尔标志并存储鼠标的位置,然后当释放按钮时,将其设置为 false。下一步是移动小部件。在 mouseMoveEvent 中,检查是否设置了该标志。如果已设置,则采用鼠标的新位置。计算新位置与存储位置之间的差异。然后,将窗口的位置设置为原始位置+计算出的鼠标移动。然后存储新的鼠标位置。

所需的代码是这样的:

警告:此代码示例不正确,将导致拖动窗口时发生跳跃行为。请使用来自Qt 形状时钟示例反而。

/// Header contents:
class MyWidget : public QMainWindow
{
protected:
    void mouseMoveEvent(QMouseEvent* event);
    void mousePressEvent(QMouseEvent* event);
    void mouseReleaseEvent(QMouseEvent* event);
private:
    QPoint mLastMousePosition;
    bool mMoving;
}
/// Source:
void MyWidget::mousePressEvent(QMouseEvent* event)
{
    if(event->button() == Qt::LeftButton)
    {
        mMoving = true;
        mLastMousePosition = event->pos();
    }
}

void MyWidget::mouseMoveEvent(QMouseEvent* event)
{
    if( event->buttons().testFlag(Qt::LeftButton) && mMoving)
    {
        this->move(this->pos() + (event->pos() - mLastMousePosition));
        mLastMousePosition = event->pos();
    }
}

void MyWidget::mouseReleaseEvent(QMouseEvent* event)
{
    if(event->button() == Qt::LeftButton)
    {
        mMoving = false;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT4拖动窗口没有标题栏 的相关文章

  • 如何将X11事件传递给QDialog

    目前 我正在尝试将系统 X11 事件 在 Linux 上 传递给我创建的对象 为此 我从 QApplication 中将 eventFilter 安装到了我的对象上 这是有效的 因为它获取应用程序的所有事件 但是我还需要传递对象 X11 事
  • 如何使Qt主窗体在屏幕上居中?

    我已经在主窗体的构造函数中尝试过这些 QRect desktopRect QApplication desktop gt availableGeometry this move desktopRect center frameGeometr
  • 升级到命名空间中的自定义小部件

    我在命名空间 MyNameSpace 中有 MyCustomWidget namespace MyNameSpace class MyCustomWidget public QWidget 如何在 UI 表单中将 QWidget 升级为 M
  • 如何使用 QT 设置 PATH 变量?

    如何使用 QT 4 8 获取和设置 PATH 变量 我知道我可以使用 STL 中的 getenv 获取 PATH 变量值 但不知道如何使用 STL 或任何基于 Qt 的方法设置它 如果 QT 有它的功能 我想了解并使用它 而不是去使用 Wi
  • Qt 应用程序:模拟模态行为(启用/禁用用户输入)

    我目前正在开发一个应用程序 该应用程序启动显示附加对话框的单独进程 我试图实现的功能是模拟这些对话框的模式行为 更具体地说 我需要应用程序在对话框启动时停止处理所有输入 包括鼠标和键盘 并在对话框关闭时恢复 对话框保持在应用程序顶部并不是那
  • 如何将QT国际化集成到CMake中?

    大家好 我正在尝试将 QT 国际化与 CMake 结合使用 我的 cmake 文件配置如下 Internalization this should generate core jp ts SET rinzo core TRANSLATION
  • 有没有办法在 Windows 上使用 Qt 列出当前进程?

    使用 Qt 4 是否可以知道哪些进程正在运行 我正在寻找一种方法来等待用户关闭应用程序才能进行操作 我也不知道 Qt 解决方案 但使用CreateToolhelp32Snapshot Process32FirstW and Process3
  • 在QGraphicsView的ScrollHandDrag模式下,如何停止场景中QGraphicsItems的移动?

    我有多个QGraphicsItem场景中的内容分布在场景的不同部分 在应用程序中 有不同的模式 其中一种模式用户可以滚动场景 手掌拖动模式 为了实现场景I的滚动set dragMode of QGraphicsView to ScrollH
  • 如何在 Qt 中将 foreach 与 QDomNodeList 一起使用?

    我是 Qt 新手 每天都在学习新东西 目前 我正在利用空闲时间为我的诺基亚 N900 开发一个小型应用程序 一切都很好 我可以在设备上编译和运行 Maemo 应用程序 我刚刚了解到foreachQt 中的关键字 我知道它不在 C 中 所以我
  • Qt 颜色选择器小部件?

    我有一个QDialog向用户提供一些选项供其选择的子类 这些选项之一是颜色 我见过QColorDialog https stackoverflow com a 1972272 2062384 我需要一些更简单的东西 这也是一个常规小部件 这
  • 获取一段代码的执行时间

    如何获取 Qt C 中一段代码的执行时间 毫秒 Use the QTime班级 开始它 start or restart 然后检查经过的毫秒数 elapsed 当然 精度最终取决于底层操作系统 尽管在主要平台上 您应该可以轻松获得真正的毫秒
  • 是否可以在没有接收器实例的情况下将信号连接到静态插槽?

    是否可以在没有接收器实例的情况下将信号连接到静态插槽 像这样 connect object SIGNAL some STATIC SLOT staticFooMember 有一个QApplication closeAllWindows Qt
  • 我可以取消选中组框中的一组 RadioBottom 吗?

    组 Box 内的单选底部将被视为一组底部 它们是互斥的 我怎样才能清理他们的检查状态 我有几件收音机底部 其中一件经过检查 我怎样才能 清洁 取消选中 所有收音机底部 setChecked 在组内不起作用 我尝试做以下事情但失败了 我的代码
  • QT布局,如何使水平布局中的小部件向下移动一行而不是溢出窗口

    现在我有一个 QHBoxLayout W W W W W W 我将尺寸调整得更小 得到 W W W W lt gt 我想要 下划线是黑色空间 W W W W W W 我不确定哪种布局可以做到这一点 有人有主意吗 KDE 设置应用程序可以满足
  • 如何在点击 Qtablewidget 单元格时获取放置在该单元格中的小部件的行号?

    我正在尝试的是当用户选择项目时获取 QcomboBox 的行号 虽然使用它很容易获得单元格的列和行 cellClicked int int 信号 但仅当单元格上没有小部件时才有效 那么如果单元格中放置了小部件 如何获取行号 Note 所有组
  • QGroupBox边框

    经过一段时间的搜索后 我发现在组框上设置可见边框的方法是使用 StyleSheet 属性 我补充道 border 2px solid gray 但有几个问题 1 组框内的所有内容也继承此设置 2 边框在标题附近有一个小洞 碎片缺失 Here
  • 检查目录是否为空

    我正在尝试检查目录是否为空 MainWindow MainWindow QWidget parent QMainWindow parent ui new Ui MainWindow ui gt setupUi this QDir Dir h
  • QTextEdit.find() 在 Python 中不起作用

    演示问题的简单代码 usr bin env python import sys from PyQt4 QtCore import QObject SIGNAL from PyQt4 QtGui import QApplication QTe
  • QMessageBox::about 可以根据标题长度调整大小吗?

    我想创建一个简单的 关于 对话框 但注意到QMessageBox about不会根据标题的长度调整其大小 由于字体较大 标题通常会更长 至少在我的桌面环境中 仅根据内容调整其大小 有没有办法确保对话框足够大以显示所有标题 我当然可以向 ab
  • 在Qt中,如何正确实现委托?

    我遵循模型 视图 控制器范例 我很确定模型和视图是正确的 但我认为我的代表做错了一些事情 一切都 有效 除了第一次单击控件只是 点亮控件 而第二次单击与之交互之外 这是代表通常的实施方式吗 我的实现需要大量的构造和销毁 由scoped pt

随机推荐

  • ld:找不到框架 Flutter

    当我在 iOS 模拟器上构建 iOS 的 flutter 项目时 出现错误 ld framework not found Flutter 并且构建失败 这是当我尝试从 xcode 构建 flutter 项目时出现的错误消息 export I
  • ASP.NET MVC 2 - HTML.EditorFor() 和自定义编辑器模板

    随着 MVC 2 添加 HtmlHelper EditorFor 不可能为给定的 Model 对象创建强类型的 Display 和 Editor 模板 在摆弄它之后 我有点困惑如何将额外的 Model 数据传递到编辑器而不丢失编辑器控件的强
  • HTML5 数据列表值与内部文本

    我遇到了 Chrome 和 Firefox 对 HTML5 datalist 元素的处理之间出现的问题 我可能滥用了它 Firefox 正在按照我期望的方式处理它 但 Chrome 却不是 我还没有在 Opera 上尝试过 这是针对内部页面
  • 使用 FILTER_VALIDATE_REGEXP 的 filter_var

    我正在练习我的 PHP 初学者技能 想知道为什么这个脚本总是返回 FALSE 我究竟做错了什么 namefields a zA Z s value john if filter var value FILTER VALIDATE REGEX
  • 打印n层调用堆栈?

    在 Visual Studio 中使用 C 我想知道是否有一个 API 可以为我打印调用堆栈 最好 我想打印 5 层深度的调用堆栈 Windows 是否提供了一个简单的 API 来允许我执行此操作 看起来 Microsoft 的 DbgHe
  • Xcode 7:链接器命令再次失败,退出代码为 1(使用 -v 查看调用)

    我在 Xcode 7 的 iOS 模拟器上测试我的应用程序 但当我尝试在我的 iOS 设备 带有 iOS 9 的 iPhone 5S 中测试时 我今天 09 16 2015 更新了 xcode 7 和 iOS9 在此之前使用 iOS 8 4
  • 如何从主机外部(同一网络)连接到 docker 容器 [OSX 10.11]

    设置 计算机 A 这是 Docker 机器 默认 运行的地方 虚拟盒子 default 正在运行一个名为 Odoo 的容器 默认 是使用创建的Docker的安装过程 奥杜 是 创建使用Odoo的安装过程 计算机 B 这是同一局域网 LAN
  • 修改 CDO.Message 对象中附件的内容类型

    当我尝试使用 VBScript 将 MHTML 文件作为电子邮件附件添加到电子邮件中时 ContentMediaType被错误地设置为 message rfc822 RFC 822 据我了解 根据 Microsoft 的说法这是正确的 但根
  • 如何显示 NSDocument 目录中的所有图像

    首先 我从照片库中选择图像到 ALAsset 库 然后将图像存储在 ALAsset 库路径的文档目录中 我正在使用此代码将图像存储在 ALAsset 库的文档目录中 它工作完美 现在我想在表视图中显示存储在文档目录中的所有图像 我该怎么做
  • Python 从 tar.gz 导入库?

    我正在开发一个没有 root 访问权限的盒子 但是 有一个文件夹 share 可供每个人读取和写入 我想找到一种方法来放置 python 库 以便每个人都可以访问和使用它们 我发现我可以将 Egg 文件放在 share pythonLib
  • Swift 中哪些值类型支持写时复制?

    我读到了关于 Swift 中数组的写时复制实现here 与标准库中的所有可变大小集合一样 数组使用写时复制优化 阵列的多个副本共享同一存储 直到您修改其中一个副本 当发生这种情况时 被修改的阵列将用其自身唯一拥有的副本替换其存储 然后就地修
  • Android 中的 Intent 与 Content Provider

    我是android应用程序开发的新手 在研究基本的android组件时 我对意图和内容提供者感到困惑 因为两者都被用来将数据从一个应用程序 组件发送到另一个应用程序 组件 如果有意图 我们可以使用捆绑或附加功能发送数据 那么为什么我们要使用
  • 10 月 15 日 Windows 更新后 MVC 应用程序中断

    今天早上我醒来发现我的服务器上的 MVC 4 Web 应用程序已损坏 错误信息是 An exception of type System IO FileNotFoundException occurred in mscorlib dll b
  • 错误:mime-types-data 需要 Ruby 版本 >= 2.0

    我最近在 vmware fusion 中安装了干净的 ubuntu 14 04 虚拟机并更新了它 我正在尝试通过安装 mime tyes data sudo gem install mime types data v 3 2015 1120
  • 带 H:MM:SS 的精密计时器

    如何用 H MM SS 显示天文计时器 我读到默认显示 MM SS 和 H MM SS 我只找到了 MM SS 这是我的 MM SS 代码 带有开始和停止按钮 public class MainActivity extends AppCom
  • Docker-compose:应用程序容器无法连接到 Postgres

    使用 docker compose 我尝试从以下位置查看 Flask 应用程序manage py runserver与 postgres 图像连接 但出现以下错误 sqlalchemy exc OperationalError psycop
  • UserHostAddress 给出错误的 IP

    我收集了用户访问我的网站的 IP 地址的统计数据 我注意到只有两个 IP 地址 172 16 16 1 和 172 16 16 248 我用来确定 IP 地址的属性是 Request UserHostAddress IP地址信息丢失可能是什
  • 如何从 Vue.js 数组中删除项目

    我是 vue js 2 的新手 目前正在开发一个简单的事件应用程序 我已成功添加事件 但现在我想通过单击按钮来删除事件 HTML div class list group div class list group item h4 class
  • Python:无法在网页中使用selenium下载

    我的目的是从下载一个 zip 文件这是这个网页中的一个链接https www shareinvestor com prices price download html type price download all stocks bursa
  • QT4拖动窗口没有标题栏

    我正在开发的应用程序有一个自定义 UI 需要我从主窗口中删除标题栏 不幸的是 我不知道如何制作它 以便我可以在屏幕上移动应用程序 我删除标题栏的代码如下 MainWindow MainWindow QWidget parent QMainW