如何在 qt5 上绘制 QDialog 的插入符号/箭头底部

Posted

技术标签:

【中文标题】如何在 qt5 上绘制 QDialog 的插入符号/箭头底部【英文标题】:How to draw a caret/arrow bottom of a QDialog on qt5 【发布时间】:2018-06-09 19:06:02 【问题描述】:

我想在 qt 窗口的顶部或底部绘制插入符号/箭头。我找不到与此相关的任何文件。

如何使用 qt5 完成这项任务?我已经搜索了所有可能的词,但找不到任何东西。

这可以应用于需要的 QDialog 或 qml 吗?我的首选是 QDialog,因为我在 QDialog 中已经有一个 web 引擎和其他 qwidget。

我正在使用 C++。

这就是我的意思:

【问题讨论】:

【参考方案1】:

大多数窗口管理器不直接支持非矩形窗口,这意味着如果您想做这样的事情,您需要通过使窗口足够大以包含其正常内容和所需内容来伪造它插入窗口区域内的插入符号,并使窗口在顶部透明。

为此,请在您的对话框上调用 setAttribute(Qt::WA_TranslucentBackground)setAttribute(Qt::WA_FramelessWindowHint),并覆盖 paintEvent(QPaintEvent *) 以仅为您希望不透明的对话框部分绘制对话框的背景。

【讨论】:

半透明背景会起作用!谢谢!已接受答案。

以上是关于如何在 qt5 上绘制 QDialog 的插入符号/箭头底部的主要内容,如果未能解决你的问题,请参考以下文章

如何在函数中绘制插入符号列车对象

QT5之三大重要窗体

如何从QDialog刷新/更新/重绘QMainWindow?

Qt 5.1 - QMessageBox 错误?如果在隐藏 QDialog 时调用 QMessageBox,则程序退出(0)

在QOpenGLWidget上使用Qt5小部件而不重写?

具有透明背景的 QDialog 显示为黑色