【问题标题】:Retrieve the right clicked QPushButton object name in qt在qt中检索右键单击的QPushButton对象名称
【发布时间】:2017-11-12 07:05:20
【问题描述】:

我已经有了这个函数来检索点击的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 还很陌生,所以希望得到一些具体解释的答案。
非常感谢。

【问题讨论】:

  • 您可以添加更多代码,您的问题的主要问题在这里不可见
  • @saeed 我添加了我如何实现它的代码。感谢您的回答,我尝试了您的以下答案。但这些对我来说似乎有点难以理解和实施。
  • 您已连接 MainWindow 信号和插槽,因为我了解您想要识别按钮右键单击的问题,如果您想处理单击和右键单击按钮,您应该连接按钮信号。
  • 如果没有,您可以发布更多代码,如果可能的话,您可以发送邮件至 saeedsoleimanifar@gmail 以查看您已完成的全部代码

标签: qt qpushbutton


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 2020-06-05
    相关资源
    最近更新 更多