在qt中检索右键单击的QPushButton对象名称

时间:2017-11-12 07:05:21

标签: qt qpushbutton

我已经有了这个函数来检索点击的QPushButton对象名称:

void MainWindow::clickedBtnInfo()
{
    QPushButton *btnSender = qobject_cast<QPushButton*>(sender()); // retrieve the button you have clicked
    QString *clickedBtnName = btnSender->objectName(); // retrive the object name from the clicked button
    qDebug() << clickedBtnName;
}

我检查了这个website以实现rightClicked信号。

但我想知道如何检索右键单击的QPushButton对象名称。
谢谢。

编辑我如何实现rightClicked信号:

void MainWindow::onRightClicked()
{
    qDebug() << "User right clicked me";
}

void MainWindow::mousePressEvent(QMouseEvent *e)
{
    if(e->button() == Qt::RightButton) {
        emit rightClicked();
    }
}

并像这样连接:

connect(this, SIGNAL(rightClicked()), this, SLOT(onRightClicked()));

很抱歉没有完全解释我的问题。顺便说一下,我对Qt很新,所以希望得到一些具体解释的答案。
非常感谢。

1 个答案:

答案 0 :(得分:0)

您在问题中提供的链接是正确的。您需要延长QPushButton QMainWindow!只需将https://stackoverflow.com/a/15658863/3767076中的来源复制到您的项目中(如果您需要两次点击,请查看下面的评论)。

之后,您可以使用QRightClickButton代替QPushButton。如果您使用设计器创建了UI,则可以右键单击ui中的按钮并将其设置为QRightClickButton的占位符。