【问题标题】:qt QWidget clickqt QWidget 点击
【发布时间】:2011-04-30 19:25:15
【问题描述】:

我有自己的基于 QWidget 的课程。我把这个小部件放在 QMainWindow 中,我需要抓住鼠标点击这个小部件。

我试过了:

connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0)));

但是什么都没有发生。我该怎么做?

【问题讨论】:

    标签: c++ qt signals-slots


    【解决方案1】:

    QWidget 没有 clicked() 信号,并且 QMainWindow 没有 exit() 槽。无法连接到不存在的信号和不存在的插槽。如果连接成功,则连接的返回值必须为真。建立连接时检查此值,以确保您的代码能够正常工作。

    要退出您的应用程序,您必须致电qApp->quit()

    另外,正如其他人所提到的,您必须安装一个 eventFilter 或重新实现

    void QWidget::mousePressEvent ( QMouseEvent * event )   [virtual protected]
    

    void QWidget::mouseReleaseEvent ( QMouseEvent * event )   [virtual protected]
    

    方法。

    Qt 的官方文档中有很多例子,this 例如重新实现了mousePressEvent(QMouseEvent *event) 方法。

    有关 eventFilter 选项,请参阅this 小示例。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      QWidget 没有 clicked 信号。要完成这项工作,请使用事件。所有的小部件都支持事件,所以有一些手动工作要做,但不多:

      1. 覆盖小部件的event 函数(从QWidget 派生
      2. 响应QEvent:: MouseButtonPress 类型的事件

      或者,添加一个eventFilter 方法。

      谷歌我提到的代码示例的类和方法,并根据您的确切需求获得完整的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-20
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多