D:\QT5.9.0\Project\test1\test15\clockwidget.h:34: error: no matching function for call to 'ClockWidget::connect(QTimer*&, void (QTimer::*)(QTimer::QPrivateSignal), ClockWidget*, <unresolved overloaded function type>)' connect(timer, &QTimer::timeout, this, &ClockWidget::update); ^
时间: 2024-03-16 14:47:55 浏览: 75
基于QT的widget功能使用实例
这个错误提示和之前的提示类似,也是因为 `connect` 函数无法确定如何匹配 `&ClockWidget::update` 这个槽函数的参数类型,进而导致编译失败。
根据您提供的错误提示,我猜测您在 `ClockWidget` 类中声明了一个名为 `update` 的成员函数,这与 `QWidget` 类中的 `update` 函数重名了。为了解决这个问题,您可以将 `ClockWidget` 类中的 `update` 成员函数重命名为其他名称。
例如,将 `update` 重命名为 `refresh`:
```c++
#ifndef CLOCKWIDGET_H
#define CLOCKWIDGET_H
#include <QWidget>
#include <QTimer>
class ClockWidget : public QWidget {
Q_OBJECT // 必须添加的宏声明
public:
ClockWidget(QWidget* parent = nullptr);
protected slots:
void refresh(); // 将 update 重命名为 refresh
private:
QTimer* m_timer;
};
#endif // CLOCKWIDGET_H
```
在实现时钟指针随鼠标移动而旋转的功能时,您需要在 `ClockWidget` 类中的 `refresh` 函数中重新计算指针的旋转角度,并调用 `update` 函数触发窗口重绘。具体实现方法可以参考我之前给出的示例代码。
阅读全文