问题标签 [paintevent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4625 浏览

qt - 如何对小部件进行子类化以向其添加更多元素?

我正在尝试创建一个在顶部QTableView嵌入的子类,以便在输入时过滤结果。QLineEdit我需要我的表具有与 normal 相同的 API QTableView,所以我想对它进行子类化,而不是对其进行子类化QWidget和添加 a QLineEditand QTableView

我想我可以重新实现paintEvent(QPaintEvent*),改变QPaintEvent'srect()以稍微低一点( a 的高度QLineEdit,所以它在它下面绘制)然后将它传递给QTableView::paintEvent(),但QPaintEvent参数只规定了需要重新绘制的区域,而不是应该绘制小部件的区域。

0 投票
3 回答
2259 浏览

c++ - Qt - 创建 QPainter

我正在尝试paintEvent在我的程序中重写方法并进行更改。

在这里,我尝试改变我的bg形象。但是我在网上遇到了一个错误:QPainter painter(this);

错误:变量“QPainter Painter”已初始化,但类型不完整

0 投票
1 回答
2171 浏览

qt - [Qt]paintEvent 未在从 QAbstractButton 派生的自定义按钮中调用

我正在尝试创建一个源自“QAbstractbutton”的自定义按钮。我已经覆盖了paintEvent。但是,我的按钮在我的小部件中不可见。我看到的是,即使在我的按钮上调用了 update/repaint/show 之后,paintEvent 也没有被调用。这里可能缺少什么链接?

谢谢!

0 投票
1 回答
4281 浏览

qt - 当 QWidget::paintEvent() 被其他窗口悬停时,如何强制调用它?

我遇到了一个问题:我正在编写一个小部件,它显示当前日期的天数。它就像一个按钮,但它不是从QPushButton类派生的。刚从QWidget。所以我重新实现了enterEvent(), leaveEvent(), mousePressEvent(), mouseReleaseEvent(). 我update()在这些方法中调用,并且小部件具有逼真的按钮行为(paintEvent()也被重新实现)。但是当我更改系统日期并将该小部件悬停在其他窗口时,我的小部件不会调用paintEvent()并显示旧日期。只有当我将鼠标放在它上面时,小部件才会重新绘制它的内容。我想有一个选项可以在悬停事件上绘制旧内容以避免不必要的绘制事件。但我需要禁用它。试图设置许多属性(Qt::WidgetAttribute枚举)。但这没有帮助。

请帮帮我(对不起我的英语不好)。

0 投票
1 回答
3034 浏览

qt - PyQt Child Widget没有收到paintEvent

我在 qt 设计器中创建了一个小部件,并使用 pyuic 将 ui 文件转换为一个名为 Ui_wid_canvas 的 python 类。这应该用作特殊画布:

我从 Ui_wid_canvas 派生了一个 MyCanvas 类来实现 paintEvent 函数和一些实用函数,例如 moo()。在paintevent 中它所要做的就是绘制两个矩形。如果我使用以下类作为我的应用程序,那么一切都会像魅力一样。

现在,当我创建一个应用程序 Test 实例化 MyCanvas(见下文)时,调用了 Test 的paintEvent,但从未调用过 MyCanvcas 的paintevent,没有绘制矩形,并且控制台上没有输出“Paintevent Canvas”。如果我调用self.widget.update()self.widget.redraw()在 Test.paintevent() 中调用,则不会捕获到paintevent。如果我self.widget.paintevent()手动调用,则调用该函数,但未激活画家。另一方面,显示了按钮,我认为该小部件已正确包含,但子小部件并未调用绘制事件。

设置 Qt.WA_PaintOutsidePaintEvent 不是一个选项,因为它不适用于 Mac 和 Windows,但我想保持平台独立。

请原谅我发布了这么多代码,但我想这会让事情变得更容易。我试图将其保持在最低限度。有人能告诉我如何让 Widget MyCanvas 在其自身上绘画并将这个绘画小部件包含在另一个小部件 MyTest 中,它将作为应用程序工作吗?

0 投票
3 回答
1923 浏览

.net - 如何在没有访问 System.Windows.Forms.PaintEventArgs 命名空间的情况下在 Winform 上绘图?

形成我到目前为止在我的程序中所做的事情,似乎在 winform 上绘制任何东西的唯一方法是通过 System.Windows.Forms.PaintEventArgs。如果您无权访问这些参数或此命名空间,而您只能访问 winform,您将如何在 winform 上绘制(比如矩形之类的形状)。

提前致谢。

0 投票
1 回答
2417 浏览

python - 使用 PySide 覆盖paintEvent 的问题

我对 QPlainTextEdit 类进行了子类化,并尝试覆盖paintEvent 函数,以便可以在其上绘制行号区域。

当程序运行时,我得到这个输出:

我最好的猜测是该函数没有被正确覆盖,但我真的不确定。谁能告诉我哪里出错了?

0 投票
1 回答
18199 浏览

c++ - Qt 小部件何时获得paintEvent?

我想知道小部件在哪些情况下会收到它的绘制事件,以及它如何随操作系统而变化。

paintEvent 的 Qt 文档只说

绘制事件是重新绘制全部或部分小部件的请求。它可能由于以下原因之一发生:

调用了 repaint() 或 update(),

小部件被遮挡,现在已被发现,或者

许多其他原因。

到目前为止,我已经在paintEvent中添加了一些痕迹,

这就是我发现的(至少在 Windows 7 上):

当小部件失去/获得焦点时调用paintEvent。当另一个小部件经过我们的小部件时,不会调用绘制事件。我不知道这是否是因为 Windows 7 合成。当最小化的窗口被恢复时,paintEvent 也会被调用。调整大小时调用paintEvent。

那么行为是否依赖于操作系统?

0 投票
2 回答
7039 浏览

qt - Qt 4.7 - 使用paintEvent绘制带有动态反馈的2点线

所以我试图在两点之间画一条线。鼠标左键单击开始线条,然后我希望在鼠标移动时动态绘制线条(几乎就像线条的预览)。再次单击鼠标左键,线条将被永久绘制。我知道还有很多其他关于 QPaintEvents 的帖子,并且我结合了一些使用的技术,但由于某种原因,没有任何东西被绘制到画布上。下面是代码:

任何帮助表示赞赏!谢谢!乔什

0 投票
1 回答
387 浏览

qt - 在 MainWindow 中覆盖小部件的绘制事件

我有一个想要手动绘制的小部件容器。但是,它位于我的 GUI 的 MainWindow 类中。

有什么方法可以注册特定 QWidget 的绘制事件,所以我自己的函数将被调用?