qt怎么获取connect发送端的指针
时间: 2024-02-09 11:12:29 浏览: 68
qt d指针和q指针的例子demo
在 Qt 中,可以使用 `QObject::sender()` 函数来获取信号发送者对象的指针。在槽函数中调用 `sender()` 函数可以返回一个指向发送者对象的指针。但是需要注意的是,如果槽函数是通过连接(`connect`)函数动态连接的,则需要在连接函数中使用 `Qt::DirectConnection` 参数来保证 `sender()` 函数的正确性。
以下是一个使用 `sender()` 函数的例子:
```cpp
#include <QApplication>
#include <QPushButton>
class Example : public QPushButton
{
public:
Example(QWidget *parent = nullptr)
: QPushButton(parent)
{
connect(this, &QPushButton::clicked, this, &Example::onButtonClicked);
}
private slots:
void onButtonClicked()
{
QPushButton *senderButton = qobject_cast<QPushButton *>(sender());
if (senderButton) {
qDebug() << "The sender button text is:" << senderButton->text();
} else {
qDebug() << "Failed to get the sender button.";
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Example button1;
button1.setText("Button 1");
button1.show();
Example button2;
button2.setText("Button 2");
button2.show();
return app.exec();
}
```
在上面的例子中,我们创建了一个 `Example` 类,继承自 `QPushButton` 类,并在其构造函数中连接了 `clicked` 信号到 `onButtonClicked` 槽函数上。在 `onButtonClicked` 槽函数中,我们通过 `sender()` 函数获取发送者按钮的指针,然后打印其文本内容。最后,在 `main` 函数中,我们创建了两个 `Example` 对象,并在它们上面设置不同的文本内容,然后显示这两个按钮。当我们点击这两个按钮时,会在控制台输出相应的文本内容。
阅读全文