QT程序:QPainter painter(this); 使用connect函数,接收者是painter怎么写
时间: 2024-03-23 22:42:17 浏览: 86
`QPainter` 是一个绘图工具类,不是一个信号接收者。因此,无法将其作为 `connect` 函数的接收者。如果你想要在 Qt 程序中使用信号与槽,你需要使用 `QObject` 的子类对象作为信号接收者。
以下是一个示例代码,展示如何在 Qt 中使用信号和槽:
```cpp
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr);
~MyWidget();
public slots:
void onMySignal(int value);
private:
QPushButton *m_button;
};
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
m_button = new QPushButton("Click me", this);
connect(m_button, &QPushButton::clicked, this, [this]() {
emit onMySignal(42);
});
}
MyWidget::~MyWidget()
{
}
void MyWidget::onMySignal(int value)
{
QPainter painter(this);
// 使用 painter 绘制图形
}
```
在上面的示例中,我们创建了一个 `MyWidget` 类,它继承自 `QWidget`,并包含一个 `QPushButton` 对象。当用户单击按钮时,我们发出了一个名为 `onMySignal` 的信号,并将其值设置为 42。在 `MyWidget` 中,我们将 `onMySignal` 信号连接到 `onMySignal` 槽函数上,这样当信号被发出时,我们可以使用 `QPainter` 绘制图形。
阅读全文