【问题标题】:Generic transparent Qt widget that can catch clicks?可以捕获点击的通用透明 Qt 小部件?
【发布时间】:2010-05-30 14:10:50
【问题描述】:

我已经弄清楚如何使用 QPainter 来绘制矩形。现在我想要一个绘图区域,如果用户单击,则在鼠标指针所在的位置绘制一个 1x1 矩形。为此,我假设我需要一个支持clicked() 信号的透明 Qt 小部件。

如何制作这样一个透明的小部件?或者还有什么我可以使用的吗?也许我只能使用窗口的clicked() 信号?

【问题讨论】:

    标签: c++ qt drawing qpainter


    【解决方案1】:

    你真的不需要透明小部件吗?

    你所要做的就是实施

    protected:
      void mousePressEvent(QMouseEvent *event);
    

    为您的小部件绘制矩形。

    看看 Qt 附带的scribble example

    【讨论】:

    • 看起来很有帮助,但本教程做的比我需要的要多,所以有点令人困惑。我在项目中添加了两个名为drawingPad.cppdrawingPad.h 的文件,其中包含DrawingPad 的类定义。我将此添加到 MainWindow 构造函数:drawingPad = new DrawingPad; setCentralWidget(drawingPad); 然后我收到此错误:“drawingPad 未在此范围内声明”。可能的原因是什么?我确实包括了drawingPad.h。 Qt Designer 有导入自定义小部件的特殊功能吗?
    • doc.qt.nokia.com/4.6/designer-creating-custom-widgets.html 我只能猜测,但也许你需要DrawingPad *drawingPad = new DrawingPad;
    • @Pieter 之前必须有一些东西,可能是undefined reference to 或类似的东西。可能你忘了链接到 qt 或者忘了实现一个方法……
    • 任何已声明但未实现的函数 - 例如 DrawPad 的析构函数?
    • 我发现我已经声明但没有实现析构函数。我从 DrawingPad.h 中取出了析构函数声明,但仍然出现错误。我明天会把所有代码压缩起来,这样我就可以在这里发布了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    相关资源
    最近更新 更多