Qt:"没有这样的信号"错误

Hi-*_*gel 2 c++ qt

我有一个简单的代码; 这里我有两个按钮,我按下第一个按钮,它显示一个MsgBox.然后我按下"Okay",它应该调用用第二个按钮写的连接动作,但事实并非如此.相反,我得到一个错误:

Object::connect: No such signal QMessageBox::buttonClicked(QMessageBox::Ok)
Object::connect:  (receiver name: 'OpenFile_Bttn')
Run Code Online (Sandbox Code Playgroud)

代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_OpenFile_Bttn_clicked(){
    QFileDialog::getOpenFileName(this,tr("Open file"), "", tr(""));//Open a dialog "OpenFile"
}

void MainWindow::on_pushButton_clicked(){
    QMessageBox msgBox;
    msgBox.setText("Push button to choose a file");
    //Connect clicking button in MsgBox to an action in OpenFile_Bttn button
    QWidget::connect(&msgBox,SIGNAL(buttonClicked(QMessageBox::Ok)),
            ui->OpenFile_Bttn, SLOT(on_OpenFile_Bttn_clicked()));
    msgBox.exec();//Show MsgBox
}
Run Code Online (Sandbox Code Playgroud)

另外我发现了一个有趣的事情,当MsgBox弹出时会出现错误消息,但是当我单击MsgBox中的"Ok"按钮时则不会出现.

Seb*_*nge 5

这里不需要信号,exec返回点击的按钮.

void MainWindow::on_OpenFile_Bttn_clicked(){
    QFileDialog::getOpenFileName(this,tr("Open file"), "", tr(""));//Open a dialog "OpenFile"
}

void MainWindow::on_pushButton_clicked(){
    QMessageBox msgBox;
    msgBox.setText("Push button to choose a file");
    //Connect clicking button in MsgBox to an action in OpenFile_Bttn button
    if(msgBox.exec() == QMessageBox::Ok)
    {
      on_OpenFile_Bttn_clicked();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你想使用自定义按钮,你仍然可以msgBox.buttonClicked()在exec之后调用以找出点击了哪个按钮.